QueueCtrl: Add paging view

It takes a while to load all eight thousand PieceMetas, and nobody is
going to read through that whole list at once.  Use Beehive's new
'from', 'size', and 'count' query parameters to setup a paging view,
so we only need to fetch a handful of PieceMetas at a time.

I use parseInt [1] to convert the parameters to integers, otherwise
'from + size' can be string addition (and "4" + 10 = "410" is probably
not what you want ;).

I also use Math.max [2] to avoid starting at a negative position,
Math.min [3] to avoid "from 0 to 10 of 4", and <ol start="..."> to
adjust the list numbering [4].

[1]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/parseInt
     From ECMAScript 1st Edition and supported by all major browsers.
[2]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/max
     From ECMAScript 1st Edition and supported by all major browsers.
[3]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/min
     From ECMAScript 1st Edition and supported by all major browsers.
[4]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/ol#Using_the_start_attribute
     Part of HTML 4.01 and HTML 5.
app/partials/queue.html: Add 3em left margin to <ol>

Otherwise large 'start' values were creating numbers that ran off the
left side of my page in Firefox v24.6.0.
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