Tests for stream wrapper using multiple buffers worth of data.

Tests the wrapper correctly handles exceeding their buffer capacity and flushes/refills them correctly from the wrapped stream.

Pure input test still to be written.
Reveal delayed errors during stream wrapper Write.

The wrapped C++ streambuf may be using a buffer so write operations may appear to succeed only to fail when the buffer is next written out.  This next time may not be during the call to Write; it may even be delayed till the inner stream is destroyed - long after the wrapper has gone away.  This is not ideal from the wrapper's point of view as these errors will be lost unless there is another call to Write which overflows the buffer.

Therefore, this commit changes the wrapper to flush the inner stream after every write.  This forces the errors to appear immediately and they are reported via the error code from Write.
Merge branch 'feature/stream_multiple_buffers_worth'
Changed stream wrapper `Read`/`Write` error behaviour for better performance.

Returning an exact byte-count from `Read` or `Write` in the error case meant reading/writing from/to the stream one byte at a time.  In the write case this also meant flushing the stream after every byte.  This had a massive performance impact.

This commit changes the behaviour such that the returned byte count will never be more than the amount read/written but may be less.  This is more practical and we believe is still within the documented behaviour of `IStream`.
Merge branch 'feature/stream_performance'