Add Search functionality to the API

This change includes functionality to parse the search API parameters, build a search DSL and perform the search against elasticsearch.
For consistency with other API endpoints:

    return searchParams{}, badRequestf(err, "invalid value for autocomplete")

 and similarly below.