Flush BufferedOutputStream on deletion

This pull request changes the `io.streams.BufferedOutputStream` class to call `close()` and thus flush to the underlying output stream on destruction.

This way, when programs forgetting to call `flush()` or `close()` explicitely, the output will not "disappear magically".

/cc @kiesel