Moved claimant code from riak_core_ring to riak_core_claimant

This commit intentionally does not compile. It will be squashed into
the proceeding commit after development and code review.
Refactor riak_core_ring and riak_core_claimant
Refactor claimant code so that it can be run without side-effects
Add two-phase/staged approach to cluster administration

Add staged clustering as discussed in issue #177. This new approach
to cluster administration operates in two phases. Users first stage
intended cluster changes (join/leave/remove), then commit the changes
when ready and satisfied with how those changes will impact the
cluster. This is supported by turning `riak_core_claimant` into a
gen_server and adding a new API for scheduling and committing staged
changes. Also, `riak_core_console` is updated to provide an interface
to this new API.

Change the claimant logic to no longer automatically transition
`joining` nodes to `valid` nodes. This change is necessary to support
staged joining of nodes.

Change the node removal logic to allow use of a provided seed for
random number generation, to enable the staged clustering system to
calculate the same removal plan during both the planning and commit
phases.
Add replace and force-replace cluster operations

Add support for `replace node new-node` operation that stages a
request for node to handoff all of its partitions to new-node and
then leave the cluster. This is similar to a leave, but directs
handoff to a specific replacement node.

Add support for `force-replace node new-node` operation that stages
a request that reassigns all partitions owned by node to new-node
and removes node from the cluster. This is similar to a force-remove,
but reassigns partitions to a specific replacement node.
Fix 'riak-admin join'

Fix 'riak-admin join' so that it once again works despite the changes
made to node joining as part of the new staged clustering changes. This
is accomplished through the addition of auto-joining logic in the
claimant that transitions 'joining' nodes to 'valid' nodes that were
joined to the cluster using the traditional join rather than the newer
staged join.
Update staged clustering code after review/further testing

Update claim_v2 to compute claim deltas for non-active owning nodes, to
handle corner case hit by new staged clustering code.

Change riak_core_ring_manager:ring_trans to allow code to provide a reason
when ignoring the transaction.

Update riak_core_claimant plan/commit to return reasons for failures.

Fix bug with riak_core_claimant:compute_all_next_rings where two rings were
considered equal when they were not.

Fix bug with riak_core_ring:future_ring where leaving nodes that still owned
partitions would incorrectly be changed to the exiting state.

Add code that enables querying and setting handoff concurrency settings.
Update console command to validate provided transfer limit
Merge branch 'gh177-staged-clustering' into jdm-merge-staged-clustering

Resolves merge conflicts between staged clustering and claim sim/claimv3 branches.

Conflicts:
	src/riak_core.erl
	src/riak_core_gossip.erl
	src/riak_core_ring.erl
Fix issues with previous merge and cleanup some -specs

Merge of 'gh177-staged-clustering' and 'master' had a few issues.

Re-add "clear member metadata on leave" logic that was removed in merge.
Re-add riak_core_ring:cancel_transfers/1 that was removed in merge.
Perform minor code clean-up.
Fix some typespecs to make dialyzer happier (more work still needed).

This finalizes integration into 'master' for #181
Merge branch 'jdm-merge-staged-clustering'