Add support for async through transforms

I tried a few ways of implementing `through`-like transforms which first buffer the input stream, for use with standard node-style async functions. In the end, I wound up re-implementing almost all of `concat-stream` in these modules.

It seems like either through functionality should be a part of `concat-stream`, as is implemented in this speculative PR, or else there should be a better primitive for writing `concat-stream` like modules.

This syntax seems clean to me, and there should be negligible overhead for creating Duplex rather than Writable streams. If you're into this approach, feel free to merge - otherwise I'll probably just publish this as another module and revisit it later to factor it better.

:cat2: