[frontend] Cache product 'boxes' in shared/_products
Cache entire products/show page

Warning: Updating taxons may not cause this page to be cachebusted because we don't have any touch code for taxons -> products yet.
Add caching for products, taxonomies and taxons lists on frontend

Using techniques from: http://blog.berylliumwork.com/2013/08/cache-collection-in-rails.html
Add preliminary specs for frontend caching
Add expires_in caching to HomeController#index
Add and use simple_current_order method for link_to_cart helper
Cache item_count within orders table

This means that we no longer have to load line items when attempting to render link_to_cart helper
Correct link to cart.png in screen.css
Render cart link directly to the page

Deciding to go with fragment caching for the time being
Make view cache key for products consistent

Now show views and lists of products both start with views/spree/products
Add Cache-Control headers for product show action using fresh_when
Disable caching on home controller
fresh_when from products show
Add and use simple_current_order method for link_to_cart helper
Send Surrogate-Control header in api/products requests

(experimenting with Fastly)
Set taxon_id in URL, rather than relying on http referrer

This removes a lot of terrible code from the ProductsController *AND* allows us to support ConditionalGet requests for ProductsController for anonymous users.

 sers who are signed in will get this page rendered by Rails on every request, but there's a cache block around the worst of it.
EXPERIMENTAL: Use local font rather than google font

http://www.webpagetest.org/result/140113_CW_5QX/1/details/ showed that the google font was taking about 550-650ms to load. Going to try again without that font
Add AJAX /cart_link

This is part 1 of 2, which the other one is in spree_auth_devise.

With this change, we can cache the entire page and have the only dynamic content on the page (the link to the cart) loaded through AJAX.
Whole-page cache OrdersController#edit

This makes loading /cart on subsequent requests much faster
No longer cache Spree::ProductsController#show based on current user

The only reason this was done because the login information needed to be dynamic. With recent changes in spree_auth_devise, this information is retrieved using an AJAX request (like the link_to_cart info). This means then that we can cache the entire page with no worries.