Simplify and fix UTF-16 encoding.

We'll need some work if we want to support BE and LE forms of UTF-16
on platforms where it differs from what is native. But the existing
code didn't handle doing this either, initial appearances aside. This
gets the UTF-16 encoding tests on Rakudo passing, so it's at least
correcter than what it replaced.