[bug 1030311] Port query machinery to ES. Add a basic TextFilter to prove it works.

You can now run dxr-serve and do find-as-you-type string queries. Direct search is yet to come.

* Remove SQL profiling support from query machinery. Add support for path highlighting.
* Add TextFilter. Works for basic text searches. Still needs case sensitivity and negation.
* Delete a lot of dead code from extents module.
* Change highlight() (neé highlight_line()) to operate on unicode (which everything is now) and take overlapping and unordered extents (which happens when they're drawn from disparate plugins).
* Change the 'type' key of query terms to 'name' for consistency with the 'name' attr of Filter.
* Add description attr to Filter contract.
* Add field arg to Filter.highlight() to save redundant computation and make query module code shorter.
* Add abstract Filter class.
Add a little documentation, and change a variable name to something that doesn't look like a zero.
Port query machinery to ES.