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 don't think we agreed on making this return `Map[String,Option[V]]`. We do lose some expressivity if the case of null values columns if we keep it as `Map[String, V]`, but I think it's worth it. Also, this is not consistent with get single-bin which return `Option[V]`. To be consistent, this would need to be `Option[Option[V]]` which is really awkward. Let's just filter out null keys.