cycle overflow fix.

The problem is that if the cycle is iterated upon for more than size_t.max, the index makes a jump and becomes out of sync, given the modulo approach to indexing. This is especially relevant, since cycle is supposed to be used for circular buffers, which can and are iterated upon for potentially MASSIVE amounts of data.

The new approach is to always bind _index between 0 and range.length, so that _index never actually overflows.

This has the added advantage of shifting the modulo cost from front to popFront(), which is more efficient.

Tweaked a few other things.
Tweaks in @safe and nothrow qualifiers
Support for narrow strings in cycle static array

In case anybody wanted to implement a circular buffer on unicode text.

The cycle is read-only, so of limited use, but that doesn't mean we shouldn't support it.
More Cycle changes
Touch cycle formating a little bit.
Fix Issue 10845 - std.range.Cycle broken for reference type forward ranges