### Status
For now, we're only doing this in Java, because Java is the only one that requires streaming it for each process.
Fixed by #12539 

### Feature and motivation

Right now, Java is decompressing the binary and putting it in a temp file, and all the other bindings are using them directly from where they are stored from within the respective package.

One option is to have the bindings as part of `getBinary()`:
1. check to see if the manager exists at a designated location (`~/.cache/selenium/selenium-manager/mac64/selenium-manager`)
2. If it is get the version
3. Compare the version to the "latest" (to start with we should keep this a constant with the selenium version being used)
4. If it is the latest, use it, if it isn't decompress/stream/move from package to the cache location

The advantages are:
1. No copying to temp files
2. It would be the first step for Selenium Manager Manager (#11358) if we went that route
3. I can just copy test binaries into the system directory to test them instead of needing to go through bazel (hard in some language, and actually impossible in .NET right now)

### Usage example

n/a
* Determines the correct Selenium Manager binary to use.
   *
   * @return the path to the Selenium Manager binary.
   */
  private synchronized Path getBinary() {
    if (binary == null) {
      Platform current = Platform.getCurrent();
      String folder = "linux";
      String extension = "";
      if (current.is(WINDOWS)) {
        extension = ".exe";
        folder = "windows";
      } else if (current.is(MAC)) {
        folder = "macos";
      }
      String binaryPath = String.format("%s/%s%s", folder, SELENIUM_MANAGER, extension);
      try (InputStream inputStream = this.getClass().getResourceAsStream(binaryPath)) {
        Path tmpPath = Files.createTempDirectory(SELENIUM_MANAGER + System.nanoTime());
        deleteOnExit(tmpPath);
        binary = tmpPath.resolve(SELENIUM_MANAGER + extension);
        Files.copy(inputStream, binary, REPLACE_EXISTING);
      } catch (Exception e) {
        throw new WebDriverException("Unable to obtain Selenium Manager Binary", e);
      }
    } else if (!Files.exists(binary)) {
      throw new WebDriverException(
          String.format("Unable to obtain Selenium Manager Binary at: %s", binary));
    }
    binary.toFile().setExecutable(true);
    LOG.fine(String.format("Selenium Manager binary found at: %s", binary));