The grand Guice injection fixup

This branch will get all the Guice changes to make DI work correctly and eliminate all the race conditions and have the startup and shutdown of the service controlled by the dropwizard framework.

The first patch is fixing all the lazy injection places, add explicit injection for everything that is referenced through Guice and uses eager injection everywhere.
Does anyone have a sense for whether this is necessary/reasonable/a typical practice? In the case that we want to shutdown, I wanted to make sure any errors got flushed to logs, but admittedly this feels wrong to me