Fixes byte count monitoring and adds some debugging output

ByteCounterMonitor implementations were being updated wrongly by many
 of the components that used them. This is now fixed.
Introduced MonitoredReadableByteChannel as a wrapper around a
 ReadableByteChannel that updates on reads a given monitor. This solves
 most issues with monitoring.
BufferedFileChannel now wraps a ByteCounterMonitor to monitor
 actual writes.
BlockLogBuffer also now updates bytes written on done().