Allow query over unindexed fields (#22)

This PR implements querying over unindexed fields. The changes are reasonably non-invasive, which surprised me:

1. Add class which can take a selector and a CDTDocumentRevsion and return whether the revision matches the selector.
  - Supports the same operations we currently support on indexed fields.
  - Just runs the whole selector over the revision for simplicity.
  - cd9d087
2. Update CDTQQueryExecutor and SqlTranslator to not fail when presented with a query including unindexed fields.
  - Record whether there were any parts of the query the SQL processing couldn't support, so we know when the post hoc matching step must be run (you obviously want to avoid this where possible).
  - Record when no parts of the query have supporting indexes, so the SqlTranslator can return a special-cased result which causes the all docIds to be read into the list for the post hoc matcher.
  - 1dcc1a3
3. Update tests for query integration to run in three ways to make sure the SQL and post hoc matcher return the same results.
  - Run the same tests three times:
    - Normally, using both SQL indexes and the post hoc matcher.
    - Using just SQL indexes.
    - Using just the post hoc matcher.
  - With the caveat that the "just SQL" case can't process queries with unindexed fields.
  - This uses a feature of specta called shared behaviour, which is pretty nifty.
  - 092b874

The main issue with this patch is that I needed to disable some of the invalid format tests. We need to move  selector validation to a separate class, to avoid performing the validation in the SQL query engine and the post hoc matcher. This is filed as #30.
From what I can see, `@{ @"$not": @{ @"$eq": @"white_cat" } }` has to be taken as a whole. So "there's an item in the array that `!= "white_cat"`". Rather than "not (there's an item that matches white_cat)".

`$nin` matches arrays where the value(s) passed are not in the array, which is equivalent to "not (there's an item that matches white_cat)".