Fix Issue #230

This makes sure that all data coming out of a provider that *should* be a `Buffer` is.  Well behaved providers will just have their data passed straight through, while providers that store `ArrayBuffer` or `Array` will get things coerced into a `Buffer` for free.  This should allow us to optimize providers that want to store `Buffers` more efficiently, but not penalize those that don't.

I tried to think of a way to test this, but since we already had 20+ tests failing, fixing them is the only thing necessary--also, since this is internal code, I can't easily test it except through the public fs api.
We have to be very careful not to call this on parameters of API methods that pass storage (like `read`).