For #107. Initial implementation of a set of batching apis.
For #107. Added a work queue bound on the batchers and new api methods to allow the users control how producers will be able to handle a full queue. Converted TimeBatcher to constantly poll for data.  This is to get around an issue where a maxqueue size was used, so all producers are stuck waiting until the queue gets drained. Refactored batchers to consolidate thread handling logic into an AbstractBatcher class.  Cleaned up shutdown logic.
For #107. Fixed timing issue with batchers where batching thread could run hot while constructing a batcher and limit variables haven't yet been initialized.
For #107. Hardening of Batcher implementation to account for proper error handling and close checks. Added license headers.
For #107. Reworked the batch collection management to use a new collection for each batch.  For the time only batcher this prevents wasting memory.  Otherwise it allows for previous batchs to potentially be garbage collected earlier.
Fixes #107. Final cleanup of Batcher implementation, tests, and documentation.
Merge pull request #116 from calrissian/batcherRebase2

Batcher API Rebase2