Add utf8.hh

Provides basic functions for reading Unicode codes from an iterator.
Iterators are assumed to provide octets, though wider types can be used
since they'll just be truncated.
Update header guards.
Move endianness enum to endian.hh

Update other code accordingly.