QueueCtrl: Add a query box for custom searches

Use the keypress module from UI.Utils to bind the search to an 'enter'
keypress [1].

[1]: http://angular-ui.github.io/ui-utils/#/keypress
Shift HTTP configuration from $httpProvider.defaults into PieceMeta

We don't need these defaults for Elasticsearch queries, so push them
into the $resource initialization and leave the global defaults alone.
Add Elasticsearch dependency and use it for queue management

Using the Bower build [1] of elasticsearch.js [2].

If the initial query fails, I use indices.create to create the index
[3].  I specify a mapping (schema) for the new index [4,5] and use
PieceMeta.search to populate it.  During the populating chain, I use
$q.all() to reap groups of promises before hitting the next .then()
block [6].  Having the queue in Elasticsearch allows us to attach
arbitrary data to the queue entries without mucking about in the
PostgreSQL database that everyone else is using.

[1]: http://www.elasticsearch.org/guide/en/elasticsearch/client/javascript-api/current/browser-builds.html
[2]: http://www.elasticsearch.org/guide/en/elasticsearch/client/javascript-api/current/
[3]: http://www.elasticsearch.org/guide/en/elasticsearch/client/javascript-api/current/api-reference.html#api-indices-create
[4]: http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/indices-create-index.html#mappings
[5]: http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/mapping-core-types.html
[6]: https://docs.angularjs.org/api/ng/service/$q