Refactor StreamReader

> […] StreamReader changes some of Stream's buffer settings. This concept is based on a rather fragile assumption […]

The StreamReader has now been refactored in order to be decoupled from the underlying stream.

Fixes #4, closes #5 (which is no longer needed)