Per topic partitioning bug fix and additional extension points

* Fixed bug in partitioners by topic
* Added pluggable offset writers - useful for writing plain text offsets
* Added record partition extension point - useful for updating hive metastore
* Update context when new mapper starts 
  - hadoop reuses committer and will call setupTask with new context when starting new mapper.  Verified context is being changed through the lifecycle of committer. 
  - addCounts uses this possibly old context.  Not certain the behavior is incorrect, but it could be since the output path changes when mapper changes. 
values() will return a collection, should you convert it into set to remove duplicates?