Added HashingStream and HashInterface::reset()

Address #5 by doing the following:

* Added `HashInterface::reset()` and updated tests and `PhpHash`.
* Added `HashingStream`
* Refactored `ReadIntegrityStream` to extend `HashingStream`
* `HashingStream`/`ReadIntegrityStream` no longer track `$lastHashPos`. Instead, the `seek()` method throws an exception for all offsets exception `0`. Hash is reset when `->seek(0)` is called.
I wonder if this should throw or if it should return false?