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.
This is needs to guard against there not being as single array backing the `ByteBuf`. This is true for composite buffers.