Tweak cache constructor

Fixes a minor unfilled bug with cache: The constructor would evaluate the cache from the passed in `range`, rather than the copied internal `source`.

There is no difference 99% of the time, but for those few ranges with a lazy `front` with side effects, it can make a difference.