Add search profiles

Allows alternate queries to be run for predefined searches.

Profile is specified with the *search.profile* query string parameter. Filters are still applied when a search profile is used. This definitely needs a code review.