app/scripts/controllers.js: Get product details from the API

We don't expose our Elasticsearch instance publically, so this change
lets folks outside our network see products.

product.images is currently just a list of URLs, so we don't have
per-image descriptions for the UI.  We're going to use the product
name for the description of each image, which is easier (no need to
add additional info to the database) but less informative (no
distinction between images in the slideshow).

On Fri, Nov 21, 2014 at 12:39:10AM +0000, Jordan Schatz wrote [1]:
> From what I recall at our discussion at the SEO meeting we where
> going to use the product title, or possible category and title, in
> the image's alt tag.  That isn't visible to the user except when
> they hover over the image some browsers will display the contents in
> the alt field.  The design doesn't have a caption or description for
> the image, I think that is what Lee was referring to (in addition to
> the alt tag).  So yes to there will be an alt tag, no there won't be
> a description (unless we decide to alter the design).

I've added a new 'productDescription' filter to stay DRY and make it
easy to update this the description-calculating logic if we change our
minds later.

I'm using splice() (which has wide support [2]) and map() (which has
wide support for most browsers, but is only on IE v9+ [3]).  There's a
polyfill for map() [3], so we can use that if we need to support older
versions of IE.

[1]: https://basecamp.com/2690730/projects/6465667/messages/34129275#comment_221862761
[2]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice
[3]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map

fixup! app/scripts/controllers.js: Get product details from the API
app/scripts/controllers.js: Add sizes to the favorites view

Following similar logic that I just added to the product-detail view.