keep a circular buffer of errors cached in memory
keep init_p/2 around for a smoother upgrade
reduce code duplication in doit handler
correct specification to allow undefined nonces
code_change for new server state
tweaked unit tests to placate dialyzer

The eunit ?assert() macro contains an unnecessary case clause, and dialyzer
warns us about it.  Use ?assertEqual() as a workaround.
fail with more specific reason on rexi_EXIT during DB deletion
especs/docs for fabric, minor refactorings, nits
accept options as keylists for changes and view queries, BugzID 10281
more specs/docs
_changes include_docs=true supports deleted docs (BugzID 11288)
Assign a unique ID to each request
Respond with not_implemented on purge_docs instead of crashing
Multi-faceted refactor of error logging

* Store errors as instances of internal #error{} record
* Move error buffer API calls to rexi.erl
* Don't badmatch if an old process exits abnormally
* Trivial rename of internal state fields
Move #error{} definition to rexi.hrl
Include the exception class in the #error{}
Fix a minor problem in the README and add a couple of links
Remove trailing whitespace
Add .gitignore
Consolidate ensure_exists code in mem3_util