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.
I also prefer just dropping them, which only loses the information about whether that bin actually exists in the first place, but during out discussion with Li I thought we had decided to make this Optional. I'll change it.