Separate out server and app construction
Give server control of app's lifecycle

The server only starts the app for now, but the basic
framework for stopping the app is in place too.