Implemenation of a Batcher API

This is a pass at flushing out an API and implemenation for #107.
I originally, had that, but removed it because I wanted to make sure you couldn't create a builder that would be invalid.  I liked the way a noarg create function looked, however, so I might change it back and just fall back on the check in the build function as a last ditch check that there is a size or time bound.

I still have the check in the build function however to make sure that the builder is in a valid state to actually create a Batcher.