Fix strideBack for ref ranges.
Added tests for reference type ranges to stride.
Fix for issue# 9456.

This change makes it so that decodeFront takes its range by ref and pops
off the code units that it decodes (unlike decode). It pretty much has
to do that, since it supports input ranges, and they can't do anything
else.
Swap a couple of overloads in std.utf.

This makes no semantic difference to the code, but it makes it so that
the attributes which are on one of the overloads don't make it into the
documentation (where they would imply that all of the overloads have
those attributes, which is not correct).
Minor tweak to decodeFront per review.
Fix `std.traits.hasElaborate*` docs for static arrays.
Document compiler-generated `opAssign` for `std.traits.hasElaborateAssign`.

* also add unittests
Merge pull request #1129 from jmdavis/decode

Fix Issue 9456 -  decodeFront is inconsistent in whether it pops elements off of the range or not
Merge pull request #1260 from denis-sh/fix-std.traits.hasElaborate-docs

Fix `std.traits.hasElaborate*` docs