feat: Check for required OAuth parameters on startup.

If either `scope` or `client_id` is missing/invalid, send the user to `/400.html` and show them an error message.

* Add the 400.html page.
* Check for required parameters in the OAuth relier.
* If the `client_id` is invalid, show the user `Unknown client`
* If app start detects an OAuth error, it redirects to /400.html with query parameters that can be used to log the error.
* Add server logging of parameters passed to /400.html and /500.html
* Try to simplify the error creation logic a bit.
* Move a lot of error unit tests from auth-errors.js to errors.js. Add more unit test coverage for the error creation logic.
* Add Url->objToSearchString.


Add a new OAuth error:
* 1005 - Missing parameter - it's `param` will be the missing parameter.

fixes #1740
fixes #1972 
The translate-then-interpolate pattern should probably be available generally as a method of `Translator`. In #2009 I suggested to @vladikoff a helper method `view.t` that takes care of this, but it could be implemented on `Translator`.