Remove puma and fork a subprocess

This commit removes all instances of the Puma webserver, since it has known issues on a number of supported platforms and adds significant branching logic to the code.

This commit also re-defines what it means when the server is "running". In the past, "running" has meant the web server is up. Testing has revealed that web servers actually lie and say they are running, even if they are not accepting requests. The new `running?` method uses OpenURI to access a known URL on the server.

WEBrick does not support running on a socket, so the `--socket` option has also been removed.