Range adaptor: cache

As discussed in this thread:
http://forum.dlang.org/thread/ovbjcmogezbvsxrwfcol@forum.dlang.org

This provides a range adaptor that cache the result of another range.

Meant as a lazy alternative to array. Not much else to say...?

Documentation might suck.
Issue 9535: Add more examples to std.range.sequence.

Demonstrate expected arguments for lambda / explicit function variants.

Demonstrate random access(!).
Cleanup 13508
Merge pull request #2550 from quickfur/issue9535b

Issue 9535: Add more examples to std.range.sequence.
Merge pull request #2553 from monarchdodra/13508

Cleanup 13508
fix for issue13529
Merge pull request #2554 from burner/issue13529

fix for issue13529  https://issues.dlang.org/show_bug.cgi?id=13529
Merge pull request #1364 from monarchdodra/cache

Range adaptor: cache
std.string.remove[Front|Back|First|Last|...]

bugfix
some more
removeFirstN