Address numerous issues identified during testing

This pull-request addresses numerous issues identified during testing. This includes bugs with stable leadership, cluster state propagation, ensemble membership/view changes, etc.

This is a massive pull-request with lots of intertwined changes. The goal was to do whatever necessary to make new `riak_tests` pass consistently, without non-deterministic failures.

To simplify review, I've separated this pull-request into logical commits with detailed commit messages. This is a review that is best reviewed commit by commit.

Please look at the various commit messages for additional information about the bugs this pull-request fixes, and how it does so.

All testing is currently via `riak_tests` which will be in a soon-to-be-pushed sibling pull-request. However, I have some eunit tests that I might end up pushing to this branch in the near future as well. Including a PULSE based test.

Future pull-request will focus on more documentation as necessary, but given that this is a major rewrite of large portions of `riak_ensemble`, I'd rather get this reviewed/tested and be certain we're not going to have any other significant changes.

This addresses issue #7 

Sibling pull-requests: basho/riak_core#566, basho/riak_kv#887, basho/riak_test#569