Fix issue #13: Connection is prematurely closed by receiver at connection teardown

Fixes https://github.com/perlundq/yajsync/issues/13

Receiver might close the socket before generator has called flush (on
the same socket).

- Only an issue when the Receiver ReadableByteChannel.close() will
  close the WritableByteChannel in Generator (i.e. it affects Sockets
  but not pipes, since closing the pipe read end doesn't affect it's
  write end).

- Fixed by not closing the ReadableByteChannel/WritableByteChannel at
  thread exit, let the caller be responsible for this.

Introduced in 03b14864f3f8575e6b4c4abbe6149bfa8bf2360 which fixed
issue #10. So this also fixes
https://github.com/perlundq/yajsync/issues/10

- The real problem in issue #10 was that by catching exceptions in
  Receiver.receive, instead of propagating them upward, the generator
  thread was never interrupted by Future.cancel. Fix this by reverting
  03b14864f3f8575e6b4c4abbe6149bfa8bf2360 and instead propagate
  necessary exceptions as RsyncException, allowing Future.cancel to be
  invoked.

- Also make ChannelException a subtype of RsyncException.