Add (optional) caching interface to Stream.

By default, no caching is done, maintaining original behavior. The `max_cache` argument has been added to the constructor to enable caching behavior when an integer is specified.

A `.cache()` method has been added to create a cached copy of the present iterator. By default, every element is cached, but this can be controlled, again with a `max_cache` argument.

The cache uses a(n optionally sized) deque. There may be more efficient implementations possible--it would be worthwhile for future "iterations" to research how `itertools.tee()` is implemented.
Merge pull request #3 from eykd/feature/caching

Add (optional) caching interface to Stream.