Replace DataSourceAction monad with restricted RetconMonad

As mentioned all over the place, some data source actions will need access to the retcon data store. This pull request finishes the work begun in #29 by removing the `DataSourceAction` monad and replacing it with the restricted `RetconMonad`.

This includes a wide range of changes including:

- Adding `.hs-boot` files for some modules, allowing modules with circular dependencies to compile.

- Changing types in some type classes to make use of the newness.

- Re-jiggering the error handling to prevent errors in the "inner" actions from propagating up into the "outer" handlers.

- Amend the various test suites to compile again.