Add (optional) caching interface to Stream.

By default, no caching is done, which maintains the original behavior. I've added the `max_cache` argument to the constructor to enable caching behavior when an integer is specified.

I've added a `.cache()` method 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.

Tests pass in Python 2.6, 2.7, and 3.4.

Closes #2