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.
Eventually we need to return a richer set of data from the ES search (e.g. total hits, score information, search time). Since this is a first pass just returning the IDs is fine but we should have a TODO here acknowledging future work.