Router project refactor

Very much tied to: https://github.com/NREL/api-umbrella-router/pull/2

This primarily shifts the responsibility of routing tasks and nginx management to processes in the router project (the config reloader, dns resolving, etc). This refactors some of the classes so they can be shared between this and the router project. It also implements a few small features in a configurable way in an effort to pull things out of some of our custom forks (eg, allowing api keys being passed to backends to be configured).