Rewrite search logic to be driven by elasticsearch

Rewrote the search logic to use the ElasticSearch engine.

Reasons:
=======
* Speed: It's faster especially for geodistance calculations than using native MySQL with joins
* Flexibility: Established platform allows for complex queries relatively easily (for #22)
* Robustness: Out of the box support for geolocation within polygons, which allows us to achieve #16 relatively easily (and support arbitrary polygons)



#22