Restful, fixes #7

This makes the URL for the campaign `GET /campaign/{name}`.

It also massively cleans up the code, using things like dependency injection to ensure future testability. However, it only dependency injects for app-level code, we need to look at dependency injection for modules too.