Defensively copy binary fields (THRIFT-2233)

This ensures that one consumer of a ByteBuffer does not interfere with
another, e.g.,

MyStruct myStruct = ...;
byte[] array = new byte[myStruct.bufferForValue().capacity()];
someStruct.bufferForValue().get(array);
someStruct.bufferForValue().get(array);  // previously, NPE