Base Review PR

Review PR. Initial version. 

Please come forward with any comments/suggestions/questions/etc.

The core 'interface' is in Classes.hs, the core types are in Types.hs and Process.hs handles all the core plumbing.

A collector requires 3 things:

* A way of parsing collector-specific options + options descriptions.
* A way of generating initial collector-specific state from options
* A way of generating a (Address, SourceDict, TimeStamp, Payload) four-tuple
    * It might (read: almost definitely) be better to change this to a query of `(Either SimplePoint (Address, SourceDict))` or similar in order to decouple the number of points from the number of sourcedicts from the number of input lines (or equivalent)
Why do we even need an on-disk cache? Seems like duplication of effort the Marquise daemon is going to do anyway. I think we can just keep this in-memory for now?