Allow manually connecting the server

This allows scripts controlling a DatTCP server to manually
connect the server without having it start processing requests.
This is convenient so that a script can very quickly begin
listening for connections (and allow them to queue up) before
trying to load an entire environment. This helps to ensure less
downtime when a server is restarted. This also adds "hooks" into
the server's different steps. With this, servers mixing in DatTCP
have defined ways to add logic through the different states of the
server.

@kellyredding - This is being driven by Sanford so that it can manually connect a server (so it starts queueing up connections) before loading an app's environment. Sanford needed to call `connect` manually and then call `start` and use the `on_start` hook to load the app's environment.