Massively refactors

* Breaks up monolith into components
* Adds tests for said components
* Uses callbacks for service and dao functions
* Manages db connections in the controllers
* Uses `require` in place of passing in modules
* Makes configuration independent of express app
* Adds linting and fixes initial lint issues
* Uses a real logger