Introduce advanced search to the staff interface.

Adds support for searching on different field types (text, boolean, date, enumeration).

Changes the way advanced search fields are defined in the staff and
public interface.  A new "AdvancedSearch.define_field" provides a
declarative way of indicating which fields are searchable, their types,
and how they map to the underlying Solr fields.
Allow field queries to be marked as 'literal', meaning they'll be escaped from Solr query syntax.