Simplify the riak_binary

This struct and its supporting functions developed organically over the creation of the API.  It had two flavors: deep and shallow copies.  The naming was inconsistent and because sometimes pointers did not point to memory which it owned, the user had to be careful which version to call to free memory.

This refactor makes the interface much simpler and the data is always copied.  If there is a demand for a lighter-weight version, we could revisit that in the future.