Most streams are backed by a memory buffer. Create common base classes for this functionality to avoid code duplication.
Provides safety against them accidentally becoming negative because of bugs in the calculations. Also does the same to CharArray and friends as they were strongly connection to the stream objects.