### What happened?

Selenium 4.12.0 delivers automated browser management of Firefox through Selenium Manager 0.4.12. Nevertheless, the browser version labels (stable, beta, dev, nightly) are not supported in the Java bindings. I don't know if this problem is Java-specific or also applies to other bindings.

### How can we reproduce the issue?

The following test reproduces this issue:

```java
package org.openqa.selenium;

import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.firefox.FirefoxOptions;

class MyBasicTest {

    WebDriver driver;

    @BeforeEach
    void setup() {
        FirefoxOptions options = new FirefoxOptions();
        options.setBrowserVersion("beta");
        driver = new FirefoxDriver(options);
    }

    @AfterEach
    void teardown() {
        driver.quit();
    }


    @Test
    void basicTest() {
        driver.get("https://bonigarcia.dev/selenium-webdriver-java/");
    }

}

```

Even when Firefox beta is in the cache (it would need #12632), the test fails as follows:


### Relevant log output

```shell
org.openqa.selenium.SessionNotCreatedException: Could not start a new session. Response code 500. Message: Unable to find a matching set of capabilities 
Host info: host: 'slimbook', ip: '127.0.1.1'
Build info: version: '4.12.0-SNAPSHOT', revision: 'Unknown'
System info: os.name: 'Linux', os.arch: 'amd64', os.version: '5.15.0-79-generic', java.version: '17.0.5'
Driver info: org.openqa.selenium.firefox.FirefoxDriver
Command: [null, newSession {capabilities=[Capabilities {acceptInsecureCerts: true, browserName: firefox, browserVersion: beta, moz:debuggerAddress: true, moz:firefoxOptions: {binary: /home/boni/.cache/selenium/...}}]}]
	at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:140)
	at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:96)
	at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:68)
	at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:163)
	at org.openqa.selenium.remote.service.DriverCommandExecutor.invokeExecute(DriverCommandExecutor.java:196)
	at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:171)
	at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:602)
	at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:236)
	at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:163)
	at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:156)
	at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:151)
	at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:132)
	at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:127)
	at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:112)
	at org.openqa.selenium.MyBasicTest.setup(MyBasicTest.java:34)
```


### Operating System

Reproduced in Windows and Linux

### Selenium version

4.12.0-SNAPSHOT

### What are the browser(s) and version(s) where you see this issue?

Firefox 117

### What are the browser driver(s) and version(s) where you see this issue?

geckodriver 0.33.0

### Are you using Selenium Grid?

No
Files.delete(binary);
                    } catch (IOException e) {
                      LOG.warning(
                          String.format(
                              "%s deleting temporal file: %s",
                              e.getClass().getSimpleName(), e.getMessage()));
                    }
                  }
                }));
  }
  public static SeleniumManager getInstance() {
    if (manager == null) {
      synchronized (SeleniumManager.class) {
        if (manager == null) {
          manager = new SeleniumManager();
        }
      }
    }
    return manager;
  }
  /**
   * Executes a process with the given arguments.
   *
   * @param arguments the file and arguments to execute.
   * @return the standard output of the execution.
   */
  private static Result runCommand(Path binary, List<String> arguments) {
    LOG.fine(String.format("Executing Process: %s", arguments));
    String output;
    int code;