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.
Shouldn't ES.Search be taking an interface{} rather than a string, and marshaling to JSON itself?