Progress on adding per-source state
Compiling and tests pass w/ source state

Finish adding support for per-datasource state and update the tests to
let them all compile and pass as they used to. The next step is to
refactor all this to initialise and finalise the state when the system
starts and stops.
Wrappers and fns for initialised source states

Add new wrapper types and associated functions to hold the state
associated with entities and data sources held in existentials.
Extract a source state from existential lists

Add a function which can, given a list of existential wrappers around
initialised entity and source state values, extract the one for a
specific pair of entity and source types, if such exists.

This is pretty magical.
Action monad now a reader for entity/source state value
Rework handler tests to use new source states

Rework the handler test suite to make use of the state values now
associated with each data source.
Thread state through core retcon processing code

The core retcon processing code now threads initialised state through
the whole process. A new entry point has been implemented, allowing
client code to make calls with or without an initialised state.
Update handler tests in line with new state handling
Add a make build target
Switch remove unsafePerformIO from test sources

Remove the use of unsafePerformIO/IORef "globals" for testing data
sources in favour of the new per-source state.
Add associate state to test data sources
Type sig formatting
Iterate over initialised state, not entities/sources

Recast existing "loop over all the sources and X" loop-y code to
instead operate over the collection of initialised states. This, if
nothing else, removes the code to lookup state values, which looked
(and probably was) quite unsafe.
Merge pull request #24 from anchor/wip-source-states

Each data source can have associated state