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).