Add view changes functionality

This PR adds functionality for a new _changes-like feed for views. It also adds some optimizations for _changes feed filtering by views.

This adds (up to) three new btrees to view files:
1) The log index. This btree keeps track of the seq of the update which most-recently affected a {key, view, docid}. Also keeps track of whether the updated caused the {Key ViewID, DocID} row to be present in the index or be removed from the index.
2) The seq index. This btree contains the necessary data for doing changes-type queries. Keyed on {Seq, Key}. Values are {DocID, EmittedValue, DocRev}. This index is also used for view-filtered db changes queries.
3) The keyseq index. Keyed on {Key, Seq, DocID}. This btree contains the necessary data for doing certain types of optimized view-filtered changes queries. Useful for getting the changes to a particular key or key range.

If either `seq_indexed` or `keyseq_indexed` is enabled in value of the `"options"` key of a ddoc (eg. `{"views": ..., "options": {"seq_indexed": true, "keyseq_indexed": true}}`) then the seq btree or the keyseq btree will be enabled, respectively.

Also see the corresponding changes in couchdb-couch: https://github.com/apache/couchdb-couch/pull/4
I understand why we probably mixed logic in couch_changes, but that seems awfully hackish to have a view logic tucked back inside the place where all the view logic was removed from.