API: Abstract stream class.

1. Adds EOF handling to `Stream::ReadRune` method.
2. Some minor fixes for the file stream class which slipped the PR. (I was in kinda hurry when I reviewed it.)
3. Adds abstract `Stream` class which can be used as base for other stream classes.
4. Modifies file stream class so that it uses the new `Stream` class as it's superclass.