Merge pull request #1037 from jsuereth/wip/launcher-improvements

Minor launcher improvements
Launcher can now load servers in addition to regular applications.

* Add new ServerMain interface
* AppProvider can now choose to load ServerMain or AppMain classes
* Explicitly document what happens if something doesn't match an
  expected interface
* Improve error message on inability to load something.

Fully implement the ability to launch and locate servers via the launcher.

* Parse new [server] section that denotes a service and is lock file
* Ability to serialize launch configurations.
* Attempt to look for active listening server via the lock file
* Forks the launcher itself to run servers from serialized launch configuration.
* Testing echo server.