Cache results when using unbounded slices

While results = list(lazy_results) caches results as expected results = lazy_results[:] does not.

One step closer to codegolfing! 😀

Add a test while at it.