If we are already allocating a new byte array, then we should be using `new Utf8(bytes)` for the constructor. Decoding to String here causes a lot of extra work because it decodes UTF-8 to [UTF-16](http://docs.oracle.com/javase/6/docs/api/java/lang/Character.html#unicode) and then the `Utf8` does the opposite. Also, `new String(bytes)` uses the default charset, which we shouldn't assume is UTF-8.