Remove unused octet masks/names. Simplify utf8::next_code.

Now just loops through possible octet masks/names when checking the
initial octet. If none match, it's invalid and all intermediate octets
get skipped.
Add value masks for UTF8 octets.

This replaces the need to do things like `(val & (~MASK)) & 0xFF` since
`val & VAL_MASK` now works fine.
Add utf8::put_code

Simply writes UTF-8 octet sequences via an iterator.