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)
great opportunity to jump on the lens bandwagon here