(mostly) functional release of read-only utf buf

it should work correctly if with imperfect performance for all
java strings that do not make use of utf 16 surrogate pairs.

the performance should be reasonable to good for most use cases,
but there is some low hanging fruit in the form of reverse scans
from the packed cache, hash iterations, probably some other cache
use case optimizations.

non-trivial tasks that remain: surrogate pair shimming, writable
impl, better iteration interface, prev mentioned low-hanging fruit,
and lots of performance testing