## Meta
OS:  macOS
Selenium Version:  3.11, code indicates this should be in master still
Browser:  Chrome

## Expected Behavior
When visiting a page/servlet that does not exist in Grid, a 404 status code should be returned.

## Actual Behavior
A 200 status code is returned for pages that do not exist.

## Steps to reproduce
1) Launch a hub or node
2) Open your browser's network tab
3) Visit localhost:4444/thisdoesntexist

```
Request URL: http://localhost:4444/thisdoesntexist
Request Method: GET
Status Code: 200 OK
```

## More Information
It appears the design for any [non-registered routes](https://github.com/SeleniumHQ/selenium/blob/5457171bd52747eed2ab625607d29670448f4523/java/server/src/org/openqa/grid/selenium/GridLauncherV3.java#L270) to direct to `DisplayHelpServlet`, which [returns the 200](https://github.com/SeleniumHQ/selenium/blob/5457171bd52747eed2ab625607d29670448f4523/java/server/src/org/openqa/grid/web/servlet/DisplayHelpServlet.java#L122).

Considering I typed a page that should not exist, I feel it may be more obvious if a 404 is returned to indicate a problem.

Context: My application was requesting a custom servlet by the wrong name, and became confused when a 200 was returned but the proper action did not occur. A 404 would have very quickly jumped out as a route issue.
type = "Grid Node";
        break;
      }
      default: {
        break;
      }
    }
    return type;
  }
  @Override
  public String getInitParameter(String param) {
    return getServletContext().getInitParameter(param);
  }
  private String getInitParameter(String param, String defaultValue) {
    final String value = getInitParameter(param);
    if (value == null || value.trim().isEmpty()) {
      return defaultValue;
    }
    return value;
  }
  private InputStream getResourceInputStream(String resource) {
    InputStream in = Thread.currentThread().getContextClassLoader()
      .getResourceAsStream(HELPER_SERVLET_RESOURCE_PATH + resource);
    if (in == null) {
      return null;
    }
    return in;
  }
}