Add developer documentation

This readme file explains riak_ensemble to developers wishing to
understand what the library does and how it is implemented in the code.
It is a guide for developers who wish to contribute or maintain it, with
hopefully plenty of explanations and diagrams to help them quickly grasp
all the information.

Notice that it does not include information about the integration of ensemble into Riak,
just how it works as a generic library. The riak_core and riak_kv repos will host this information. 

It also includes a script to help maintain references to functions in
the code.  Run the update-doc-lines make target after compiling the
library to update the markdown, then check in the changes.

Everybody is invited to review and give feedback on this, as we need to make it as broadly useful as possible. Documentation is never done

View it using the branch link to verify how it looks on Github, that the links are correct, etc:
https://github.com/basho/riak_ensemble/tree/feature/add-docs/doc

If the return has the atom `changed`, it will not invoke any more functions from the list, and functions return that on commit. See here https://github.com/basho/riak_ensemble/blob/develop/src/riak_ensemble_peer.erl#L1066 and here https://github.com/basho/riak_ensemble/blob/develop/src/riak_ensemble_peer.erl#L1094 for example. If one of the functions caused a commit, the others are skipped.