Refactor server code in preparation for akka-http backend

Moved the main method out of `NettyServer` and into a new class called `ServerStart`. Refactored the existing server start logic so it is easier to understand. Added tests for server start logic.

Consolidated server configuration into a single class, `ServerConfig`. This configuration class will be used by both the Netty and akka-http server backends.

Created an abstraction for a VM process so that server creation can be tested properly. This trait, `ServerProcess`, provides alternative methods to call instead of calling `System.getProperties`, `System.exit`, etc.

Made it possible to start servers other than `NettyServer`, by providing a system property called `server.class`. This feaure is only exercised in unit tests for now.

Also split out some of the smaller classes that were previously in `NettyServer.scala` into oher files.
Also, I think it would be better if akka-http was implemented in a separate sbt project, so it shouldn't go in the play core dependencies anyway.  Also the netty stuff should be pulled out into its own project too - that's going to take some thinking to work out how it should eventually make it into the dev/test/dist classpaths - perhaps the play sbt plugin will add it automatically based on a configuration item.