Add logging of num bytes buffered in Sender and Generator
Clarify interrupt/exception handling in Generator, Receiver and Sender

Make sure we always treat interrupted threads as having an error exit
status.

- Propagate, instead of swallowing InterruptedException in Generator,
  Receiver and Sender.

- Rethrow RuntimeInterruptException as InterruptedException in
  Generator, Receiver and Sender.

- Don't explicitly throw a InterruptedException after
  Generator.stop(), exit by checking the value of a flag instead.