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
always hash using same binary format

aae via riak_object:hash/1 uses v0 format. It doesn't matter if we
hash the same bytes that are on disk since we deserialize anyways as long
as we hash the same bytes between nodes. This has the added benefit that
trees do not need to be expired if a node is downgraded and the preferred
binary version changes