Provide mapping abstraction for varying low level data types

Make it easier to work with varying underlying representations of the data stored in aerospike, such as simple byte arrays or byte buffers.
Also fixes the issue that the values associated with bins were sometimes null.
No way to get Aerospike to return `ByteSegmentValue`s?