Progress ... I think

- Renamed a lot of the interfaces and test files
- Extracted factories and cleaned up naming of factory methods
- Reduced the amount of new()ing in the tests (still more work todo).
- Added tests for AsyncSnapshotReader, Snapshot
- Detected the need for a better way of hashcoding (need to steal some
NodaTime code)
- Started work on the SnapshotableRepository tests (oh boy)