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.
Failing to be able to seek to a position in a stream is inconsistent in Guzzle/streams. Most return false though, and I think that would be a better approach for this decorator. Maybe the CachingStream should be updated to remove the throws in the seek function too (probably by supporting arbitrary cache seeks).