Test that file error's are propagated

We need to make sure file stream errors don't cause hidden failures or crash the
node process.

We also only allow writes and ends to be called on the WriteStream if it is
writable, otherwise errors can be thrown in Node 0.8 when the stream is missing
a valid file descriptor.

Signed-off-by: Tim Smart <tim@fostle.com>
Propagate file error events

To ensure errors are always caught and don't crash the node process. Also, only
write and end the write stream if it is writable; this fixes a regression in
node 0.8 where WriteStream#end needs a valid file descriptor to successfully end
the stream, which in some cases it doesn't.

Signed-off-by: Tim Smart <tim@fostle.com>