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.
Added specialized version for cycle!(T[1u])

Because someone may want a cycle of a single element, in particular, things like recurrence do this.

Also note making it an alias of Repeat is not acceptable, because repeat carries the element internally, whereas cycle references external data.