Implement buffer-to-buffer copying.

I think we should also verify `source`'s contents here to ensure we're not getting a `skip(1).read(target, 3)`-like behavior.