Added application lifecycle

This required a little refactoring of Application so it can be
stoppable.

Also found that bindings in Guice can have no target (be bound to
themselves), and there can only be one qualify, so that was changed to
an Option.