Add some writable stream error-throwing tests.
Fix closing writable streams with writes in flight.

When a writable stream has a write in flight, but is also in the writable state (due to a strategy with a sufficient high water mark), everything would break. It would end up in _doClose() too early, before the in-flight write finished. Now it properly queues the close and processes it after the in-flight write.
Basic transform stream
Got default close propagation working
Implement flushing
Handle errors thrown by transform
Trying to handle errors from flush, but realizing that sync vs. async state transitions succccck. I expect them to be sync, but maybe they should always be async