provide a Location header for the same api version on POST

If a POST comes in to /buckets/B/keys, the Location header generated
should be of the form /buckets/B/keys/K. If the post arrived at /riak/B,
the Location should be /riak/B/K.
Move setting bucket properties to riak_api, see basho/riak_api#31 basho/riak_pb#30
Ignore EQC stuffs.
Remove Link headers from bucket and key lists.

While webmachine/mochiweb only accepts headers up to 8KB in size, it
has no problem producing huge headers. However, many clients cannot
handle large headers. Since the same information is produced in the
body of these requests anyway, we have no need to produce Link headers
as well. If we want to really use HATEOAS, other things need to be
reconsidered. Since we don't really have HATEOAS, let's not pretend
anymore.
Fix PR/PW

Originally, PR/PW simply checked, in the validate phase of the GET/PUT
FSM that the required number of primaries were online.

However, that was insufficient. Consider PW=2, PR=2, N=3 case; if 2 primaries
are online. You do the write, but one primary and one fallback receive
the write, the third write fails (but you've already returned a result
to the client, because 2 writes succeeded). Now, when you go to read
that key, 2 primaries are still online, but you read from the primary
that just replaced the fallback and the primary that failed the write
before. Congratulations, you just failed to read-your-own-writes.

It gets worse, even. Because the node_watcher can lag behind the actual
up/down state of a node, especially if the node kernel panics or has its
NIC unplugged, primaries can be reported up for some time after they've
stopped responding (until the distributed erlang connection closes).
This means that its even easier to fail PR/PW but still have the FSM
pass the validation stage. And since R and PR are unrelated, even PW=N
could spuriously validate (if R < PR).

The solution to all this is to simply use the preflist to check we get
the required number of responses from a primary before the FSM will
return. However, this required significant modification to the
Quickcheck tests. Additionally, some simple sanity check eunit tests
were added. Most of the actual changes in this branch are just
EQC/Eunit changes and refactoring.

This also means that PR/PW will now *block* a response from returning
until they've been satisfied. Thusly, PR=2 now will wait for at least 2
replies, possibly all N if necessary, to satisfy the constraint, meaning
you don't need to specify PR *and* R anymore. The same is true for PW,
except that PW waits for DW responses, not W responses, to satisfy the
constraint.

Additionally, the rules on how DW relates to W have been changed, DW is
always at least 1 (for the coordinating put), but it is no longer
demoted to match W.
Address concerns raised during review:

* Fix test setup to be more valid
* Fix some specs
* Move idx_type to get core
* Remove w_fail_threshold
* erlang:max() -> lists:max()
* Switch error tuples to always be 2-tuples
* Update comment about meeting PR
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
Fix wm_object to handle dw_val_unsatisfied

dw_val_unsatisfied is the replacement for w_val_unsatisfied, which
turned out to be useless and was removed.
Merge pull request #487 from branch 'bwf-location-new-url'
Merge pull request #488 from basho/sdc-bucket-props

Move setting/fetching bucket properties to riak_api
Merge pull request #485 from basho/fix-pr-pw

Fix PR/PW
Cleanup comment about Link headers which are no longer produced.
Remove more comments about Link headers. [ci skip]
Merge pull request #491 from basho/sdc-etoomanylinks

Remove Link headers from bucket and key lists
Merge branch '1.3'