Read some server configuration from a file

First part of #3429.

Some of the generic server configuration is now read from a server-reference.conf file. Moved lots of error checking, validation, system property reading and default values out of code and into the config file. This change preserves existing behaviour. All existing system properties still work.

This PR moves starts the process of getting #3429 done and can be merged as-is. More work will be needed in separate PRs. For the record, here's what still needs to be done:

* Allow user to create a server.conf file to override settings.
* Allow users to override server.conf location using system properties.
* Documentation for server.conf.
* Update NettyServer and AkkaHttpServer to use configuration. Then remove the Properties object from ServerConfig.
Yeah, fair enough. There are a mix of conventions for config options (`httpPort`, `http-port`, `http.port`) and I tried to follow the most common one. But if I'm migrating existing properties it's probably better to use the same format as the current properties.