Work on testing Whoosh.
Changed the whoosh test index builder to use title fields for locations and persons.
Incomplete version of new backend using Whoosh; some cleanup and small improvements to programs.

Currently it is possible to create a Whoosh index and run backend queries against it, but not to run the backend as a server.

Cleanup is especially changing the queries.py code to not add fields to the query objects it is given. Improvement is especially more debugging options for querydb.
New backend programs that should have been added in the previous commit.
New backend settings system.
Option for querydb to sleep between repeated queries.
Cleanup for buildindex.
Initial version of the new Whoosh backend, not fully tested.
Fix to properly indicate when there are no more pages for a description view result.
Removed option to change the config file path while the backend is running; added server settings test files; minor fixes after testing.

Backend server options tested and seem to work.
Merge branch 'master' into whoosh to get query testing setup
Better normalization for comparing results in testing.

Numeric Json values can be quoted or unquoted.
Fixes to handling of keyword list separators.
Factored out Whoosh keyword field list handling code.
Various fixes to match the SimpleDB query handling; some improvements to query testing system.

Regression testing versus the latest SimpleDB backend on 1000 events randomly chosen (with sort -R) from the current data now passes up to the following:
- Pages of description results past the last (eg page 11 if there are only 10 pages) return the same results as the last page (but have 'more' set to false as expected).

And the following small differences:
- Differences in tie breaking (I've checked these differences by hand as much as possible).
- One case of numeric rounding differences in clustering.
- The Whoosh backend does not clip description fields.
- The Whoosh backend does not always quote numbers in JSON where the SimpleDB backend does.
Changed backend index comma replacement character to tab.

Right now actual tabs in keyword input get changed to spaces irretrievably. I can't think why there would be any tabs in keywords, so this seems ok.
Option to do in-place clustering.
Switch to using Whoosh facilities for counting results.
Back to manual counting for field results, still using a single role field.

This reverts the main part of commit 115363b6ce65a7f2c9fe8c7608d37b62cf48f2d3. However, that commit introduced a single role field merging the various roleA* fields, which I am keeping for assumed search performance benefits. We may actually want to use different counting methods for different situations, but this seems ok for now.
Renamed querydb to queryindex.