Support for strongly consistent Riak

This is the `riak_core` related pull-request for on-going work to add strong consistency to Riak.

First, this pull-request integrates Riak with [riak_ensemble](http://github.com/basho/riak_ensemble), pulling in `riak_ensemble` as an included-app dependency, hooking up `riak_ensemble_sup` into the `riak_core_sup`, and bootstrapping the root ensemble (root consensus group).

Second, this pull-request fixes some issues/extends the handoff/forwarding API exposed by `riak_core_vnode` to implementing vnode modules. This is needed in [riak_kv](http://github.com/basho/riak_kv) to properly extend `riak_kv_vnode` for strong consistency.

See commit messages for more details.

**Note**: The `riak_ensemble` subsystem is disabled by default. Changing `enable_consensus` to true in top-level `riak.conf` or by defining the `riak_core/enable_consensus` environment variable is necessary for this system to be activated on start-up. When disabled, most of the code in this pull-request is intentionally not executed.

Sibling pull-requests: basho/riak_kv#710, basho/riak_ensemble#1