new riak_object binary format

goal is to be versionable and smaller on disk than using term_to_binary.
removes duplication of bucket/key in encoded value and bloat from metadata
dictionary primarly.
new object format all the things

* register {riak_kv, object_format} capability
* writes should only be serialized to v1 format when it is
  supported accross the cluster
* before sending data between nodes (handoff) the binary format
  should be changed to the current version supported accross the
  cluster. This is to ensure an older node does not receive data
  in the new format after being downgraded
* update aae to support new format and use riak_object:hash/1
  which always uses the v0 (term_to_binary) format to calculate the
  hash
* kv_backup restore calls binary_to_term on the binary encoded object.
  Since the bucket and key are not available at this time, when backing
  up the data the binary encoding is changed to term_to_binary (v0).
* use riak_object:to_binary/1 in yessir backend
support for reformating objects on disk on a running node

* Reformatting is primarily intended for downgrading a cluster
that does not support a binary version used by a newer riak
* riak_kv_reformat:run/2 folds over each partition reformatting
each object it encounters whose binary version does not match
the desired one (the first argument to run). riak_kv_vnode:reformat_object/2
does the actual reformatting by simply fetching the object and rewriting it if
it exists. This assumes that capabilities have been set to the desired
version before the call to reformat_object/2. run/2 does this and either kills
or waits for handoffs to terminate on the node (based on the second argument
to run) before proceeding. This is necessary for the node to safely continue operation.
The function folds over all partitions at once, which may not be ideal
for large datasets or highly active clusters. Based on testing it may be
prudent to introduce some concurrency control. Additionally, due to the use of pmap,
crashing folds will simple cause the calling process to hang
* This commit does not include a method for how the function will be run against
a node
* added riak_object:binary_version/1
move size calculation into riak_object and account for v1 metadata
general cleanup of riak_object module

* move sorting of vnode entries into hash/1
* replace edoc specs with module attribute specs
* move some things around
* fix some issues caught by dialyzer
Merge pull request #479 from basho/jrw-pdx-binrobj-rebased2

More Compact Riak Object Binary Format