### 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`
.add(new W3CError("unknown method", UnsupportedCommandException.class, 405))
          .add(new W3CError("unsupported operation", UnsupportedCommandException.class, 404))
          .build();
  private ErrorCodec() {
    
  }
  public static ErrorCodec createDefault() {
    return new ErrorCodec();
  }
  public Map<String, Object> encode(Throwable throwable) {
    Require.nonNull("Throwable to encode", throwable);
    W3CError err = fromThrowable(throwable);
    String message =
        throwable.getMessage() == null
            ? "<no message present in throwable>"
            : throwable.getMessage();
    return ImmutableMap.of(
        "value",
        ImmutableMap.of(
            "error",
            err.w3cErrorString,
            "message",
            message,
            "stacktrace",
            Throwables.getStackTraceAsString(throwable)));
  }
  public int getHttpStatusCode(Throwable throwable) {
    Require.nonNull("Throwable to encode", throwable);
    return fromThrowable(throwable).httpErrorCode;
  }