Lazily evaluate Stream slices

This pull request is meant to resolve #6. Right now I've just added a test for the behavior we want to accomplish (which may not even be entirely accurate, but is at least a start).

Right now slicing a Stream seems to return a slice of the underlying collection, which you have implemented as a list. In order to make this lazily evaluated, I was wondering what you thought should be the return type. We could either return a new Stream based off the parameters of the index, or simply a generator. My inclination is to do the former, but I'm open to other suggestions.

Your presentation on Functional Programming totally changed the way I write Python, and I'm a big Scala fan to begin with - I'm very excited to help on this package however I can :)