Major updates.  Breaking API. Enabling streams in and out. 

I realized I had done the streams implementation wrong; or rather not appropriately with buffered input and streamed output.  If you need streams, it's unlikely you'll be able to use buffered input. 

So this is nearly a rewrite of the entire package. I implemented the exact same tests and carried around most of the core implementation. All passes that I can tell and I've dog-fooded this on a real world project.  It helped take a 2h export down to about a minute. (2h was caused by memory bottleneck). 

Anyway, this fixes that.  Apologies ahead of time for breaking the API.  The methods are now `cvs` for a streaming writable and `csvBuffered` for the original toCSV, which behaves as it did before by returning the cvs in a callback.  (All docs and samples are updated)