FYI, @jyates - I checked in couple of minor fixes for this:

* the KeyValueBuilder passed through PTable.newRow() was never being used. I moved the member variable to PRowImpl instead and pass it through the constructor.
* the keyPtr is always copied. The "immutable" part of an ImmutableBytesWritable is *not* that the ptr itself won't change (that's perfectly fine to change), but that the underlying bytes won't change.