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)
You don't have to if there is a purpose. The important thing is, this run function looks a bit coupled. Could you factor out the logic in here so that ideally you have a really minimal run that only calls the corresponding evalState/runReader/whatever. That logic can then go in the typeclass if you wish to keep it