Add an elasticsearch query builder

Noah is using this for a feature he's working on and it seems relatively stable now, so I figure it's a good time to merge it in.  Happy to get feedback on it and iterate.  Includes tests.