Changes to make user-api deployable

At a high level, changes are

1. Refactoring (inversion of control) so that we can run an https server
2. Adjusting tests to work with refactoring
3. Addition of hakken service announcement

@kentquirk please verify that these look ok.  I spent a little bit of time trying to factor out mongo such that we could mock out the actual mongo interactions, but realized that it will be faster for me to just install mongo onto the build machine and setup the build script to fire up mongo and kill it.