Reimplement launcher in Java

* Fixes numerous race conditions:
** When two launchers run concurrently.
** When the launcher is run to get status of a running server with a separate data-dir.
* Implements the force-reload command required by the specification the launcher allegedly implements.
* Removes dependency on Ruby.
* The launcher waits for the server to finish initialization (return from main method) and returns an error status code if initialization fails.
* The launcher will no longer hang if the server fails to stop.

Caveats:

* Windows is only able to stop servers with a hard kill.
* Some (hopefully minor) race conditions remain due to the inability to call fcntl(F_GETLK) from Java.

This is being submitted to airlift before being merged to platform as you are considered to be better at reviewing something of this scope.