Routing refactor

Broke apart the massive server.js file into smaller Controller classes, with an eye toward using dependency injection to ease the creation of unit tests.