Maintain backslashes in front of nonliterals like . and $.
Fix FILE-domain search results. They were all crashy and wrong.
Get PathFilter working by hooking it up to the JS regex rewriter. Refs bug 1030313.

You should now be able to fire up test_basic and run path queries, complete with globs.

* All of test_basic passes except test_structural_and, which awaits a working `function:` filter.
* We introduce a new exception BadQuery, which filters can use to complain about user errors that keep the query from running. In a later commit, we'll catch this and display it instead of 500ing.
Fix a typo in a comment.
Get the path filter working. Close #329. Ref bug 1030313.
Stick the whole DXR index in a single shard. Close #330.

This should be faster, according to the benchmarks at http://blog.trifork.com/2014/01/07/elasticsearch-how-many-shards/.

Also, crank up the refresh interval. This will flush the indexing buffer out to disk less often, resulting in fewer Lucene segments, which should yield faster queries before they merge and less merging to do.
Fix the FILE/LINE superset problem with documentation for now. Fix bug 1058945. Close #331.

We can change the API to make it more automatic if it turns out to be a burden for plugin. In that case, most likely just move the folder, name, size, modified, and is_folder fields (the ones that aren't touched by queries) out of the core plugin and into build.py itself, then have something deep_update() LINE mappings with their corresponding FILE ones.
Allow filters to punt by returning empty. Do that in TextFilter for short terms. Ref bug 1060111.

This allows us to ignore shorter-than-trigram textual query terms without saying anything, just as the production DXR does. (There's no need for us to call attention to our deficiencies; I fear that would noise up the feedback we get when we stage the ES branch. A real solution will be reached in the Query Language Refresh. Most likely, we will merge adjacent textual terms into phrases, at least as one of our search strategies.)

As in production, highlight shorter-than-trigram terms even if we're not able to search on them.

Rename BadQuery to BadTerm; we're not giving up on the whole query if one term won't run.
Move ES query building for regexes to trigrammer.

They will eventually become part of the broken-off library along with the rest of the string-extraction machinery.
Drop the Jinja bytecode cache; it was causing test_strings to fail with strange folder-not-found errors. (The errors happened only when rendering in multiprocess workers.)

It turns out that specifying an explicit cache doesn't speed it up at all. It's 5s +/- .1 in both cases for this snippet:

```
    def test_jinja_speed():
        """See how fast Jinja is with and without an explicit bytecode cache."""
        env = load_template_env('/tmp/smoo')
        for x in xrange(1000):
            _fill_and_write_template(env, 'file.html', '/tmp/bar/' + str(randint(1, 10000000)) + '.html',
                {
                 'wwwroot': '/some/root',
                 'tree': 'sometree',
                 'tree_tuples': [('one', 'two', 'three')],
                 'generated_date': 'somedate',
                 'filters': [{'hello': 'there'}],

                 # File template variables:
                 'paths_and_names': [('path', 'name')],
                 'icon': 'someicon',
                 'path': 'somepath',
                 'name': 'somename',

                 'lines': zip(repeat(Markup('kersmoo and a half point of bars'), 200),
                              [[]] * 200),

                 'is_text': True,

                 'sections': []})
```

There may be an implicit cache somewhere, though I don't see it after 10 minutes of reading the Jinja source.
Add RegexFilter. Ref bug 1030313.

All of test_strings passes except test_empty_quotes.

* Percolate is_case_sensitive kwarg through more of the test routines so we could use it in SingleFileTestCase.found_line_eq().
* Index the content field of lines so the script filter can pull it to run the regex against.
Fix test_overall, whose expected result was wrong.
Skip the tests whose functionality isn't implemented yet: mostly clang ones.

We now have the ES groundwork laid and are working toward passing the test suite. It's distracting to have so many spurious failures. Now, if something fails, it's a problem. There are 3 of these at present.

Unskip tests as you implement what they're testing.

Remove test_filters altogether, since the one thing it tests is dead now and will be deleted when the whole filters module goes away.
Peg test requirements to reasonable version ranges.
Clean up search() a little.

To do: clean up search() a LOT.
for newer ES versions datetime format changed
added date time test
Added test for decode_es_datetime
Datetime format changed on newer ES versions. Closes #333

Merge remote-tracking branch 'origin/pr/333' into es
Fix test_multi_tree crash on indexing.