Adds elasticsearch client subclass; cleans up ES client usage

@mailbackwards This is a rather sweeping and risky change. It attempts to cleanup elastic usage with an ESClient subclass that helps to manage some of the ['hits']['hits'] stuff and other elastic clunkiness. I'm not quite sure if the benefits outweigh the risks on this -- it's fine for me because we are pretty far from anything production level on our end -- but let me know if you have any concerns about merging this on your end.

Thanks.