### 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
* Returns the browser binary path when present in the vendor options
   *
   * @param options browser options used to start the session
   * @return the browser binary path when present, only Chrome/Firefox/Edge
   */
  private String getBrowserBinary(Capabilities options) {
    List<String> vendorOptionsCapabilities =
        Arrays.asList("moz:firefoxOptions", "goog:chromeOptions", "ms:edgeOptions");
    for (String vendorOptionsCapability : vendorOptionsCapabilities) {
      if (options.asMap().containsKey(vendorOptionsCapability)) {
        try {
          @SuppressWarnings("unchecked")
          Map<String, Object> vendorOptions =
              (Map<String, Object>) options.getCapability(vendorOptionsCapability);
          return (String) vendorOptions.get("binary");
        } catch (Exception e) {
          LOG.warning(
              String.format(
                  "Exception while retrieving the browser binary path. %s: %s",
                  options, e.getMessage()));
        }
      }
    }
    return null;
  }
  /**
   * Determines the location of the correct driver.
   *
   * @param options Browser Options instance.
   * @return the location of the driver.