Implement read2 and write2 so we can pass handles between processes

This allows us to pass live sockets between processes using `uv_write2` and `uv_read2_start`.

This closes #32.
interesting syntax....