Add utf16 support

Here's my attempt at getting surrogate pairs working.

It comes with one small caveat: this doesn't work in any current implementation. Rakudo broke after perl6/nqp@360e781 (according to git-bisect), and Niecza's Buf support is incomplete.

Apart from that, I've double-checked this code a few times and it looks correct.