Query planner now precomputes startKey and endKey as NSExpressions at init time.

Mostly this improves testability, as unit tests can assert that those expressions are correct.
Query planner now supports case-insensitive string comparison

i.e. the "[c]" modifier on string comparison operators
Query planner handles "IN" expressions; other fixes

* For "expr IN $VALUES", emits expr as key and uses the CBLQuery.keys property with the runtime value of $VALUES.
* Fixed a bug where an expr could appear twice in the key if it were also given as a sort key.
* Made most of the class properties only appear in debug builds, to save code size.
Query planner: Simplify map block by precomputing a single expression for key and for value.