### Feature and motivation

Several valid [w3c errors](https://w3c.github.io/webdriver/#ref-for-dfn-error-code-13) are missing from [ErrorCodec](https://github.com/SeleniumHQ/selenium/blob/trunk/java/src/org/openqa/selenium/remote/ErrorCodec.java) class:

* `detached shadow root` 
* `no such shadow root`
* `insecure certificate`

### Usage example

Right now accessing a page with Insecure Certificate in Firefox returns a generic `WebDriverException`
private static final W3CError DEFAULT_ERROR =
      new W3CError("unknown error", WebDriverException.class, 500);
  private static final Set<W3CError> ERRORS =
      ImmutableSet.<W3CError>builder()
          .add(new W3CError("script timeout", ScriptTimeoutException.class, 500))
          .add(
              new W3CError(
                  "element click intercepted", ElementClickInterceptedException.class, 400))
          .add(new W3CError("element not interactable", ElementNotInteractableException.class, 400))
          .add(new W3CError("invalid argument", InvalidArgumentException.class, 400))
          .add(new W3CError("invalid cookie domain", InvalidCookieDomainException.class, 400))
          .add(new W3CError("invalid element state", InvalidElementStateException.class, 400))
          .add(new W3CError("invalid selector", InvalidSelectorException.class, 400))
          .add(new W3CError("invalid session id", NoSuchSessionException.class, 404))
          .add(new W3CError("javascript error", JavascriptException.class, 500))
          .add(new W3CError("move target out of bounds", MoveTargetOutOfBoundsException.class, 500))
          .add(new W3CError("no such alert", NoAlertPresentException.class, 404))
          .add(new W3CError("no such cookie", NoSuchCookieException.class, 404))
          .add(new W3CError("no such element", NoSuchElementException.class, 404))
          .add(new W3CError("no such frame", NoSuchFrameException.class, 404))
          .add(new W3CError("no such window", NoSuchWindowException.class, 404))
          .add(new W3CError("session not created", SessionNotCreatedException.class, 500))
          .add(new W3CError("stale element reference", StaleElementReferenceException.class, 404))
          .add(new W3CError("timeout", TimeoutException.class, 500))
          .add(new W3CError("unable to capture screen", ScreenshotException.class, 500))
          .add(new W3CError("unable to set cookie", UnableToSetCookieException.class, 500))
          .add(new W3CError("unexpected alert open", UnhandledAlertException.class, 500))
          .add(new W3CError("unknown error", WebDriverException.class, 500))
          .add(new W3CError("unknown command", UnsupportedCommandException.class, 404))