Use checkboxes to select/de-select facets

Step 1 towards multi-faceting...
Extract widget init functions in search JS

Just to make things easier to customise.
Multi-faceting works for field facets

This requires some fiddly UI changes to allow alternative facets to be
selected. We also treat facets as:

    field -> [*values]

instead of

    field -> value

and "OR" the filters together when multiple are specified.

Still need to tackle query facets
Don't show counts for multi-faceted fields

As we would need an extra query to work out what they are.
Multi-faceting works for query facets
Ensure only whitelisted Solr queries get executed
Generalise search form query facet handling

No need to hardcode "price_exact" anymore.
Rework facet data extraction into a "Munger" class

(Not entirely sure if it's ok to have a class called a "Munger"...)

This changes allows the manipulation of facet data to be customisable by
converting the old function into a class. We're also able to split the
logic across a few methods to make it slightly easier to follow.
Rework facet munger with tests

Simplify the API to allow easier testing, and simplify the
implementation.
Tweak docs on Solr usage
Improve pagination summary for search results
Simple faceted category view fetches products correctly

- Now with facets shown in left-hand sidebar
Show a result count on the category browsing page
Merge branch 'master' into issue/1093/search_mh
Microscopic tweak to Solr setup documentation
Drop custom get_ancestors() & introduce get_[ancestors|descendants]_and_itself()

Templates need access to both ancestors and descendants of a
category, and ideally both including the category itself or not.
Previously, get_ancestors used to default to including the category
itself, which required slicing in templates. Also, get_ancestors is a
treebeard function and I wouldn't bet that it doesn't interact with
treebeard logic.

Now, the two treebeard functions get_ancestors and get_descendants
return a queryset, and get_[ancestors|descendants]_and_itself return a
list that includes the category itself.
Remove categories from default facets

* Categories are essential to SEO. We should aim to stay in the
  established URL structure as much as possible.
* A similar division between "Show results for" (read: categories) and
  "Refine search" are in use by both Amazon and eBay.
* This change means it's not possible to filter on arbitrary categories,
  but it's still possible to filter on branches of the category tree.
  I'd argue that as the tree is a semantic categorization of the
  products, there's only very limited scenarios where filtering on
  arbitrary categories is more useful than it is confusing.
* This is a preparatory commit for merging the two product category views.
  Removing category browsing from the search backend gives us a path for
  graceful degradation if no search backend with faceting is available.
Merge FactedProductCategoryView into ProductCategoryView

Adapted get_search_queryset to handle the case of no assigned category.

Note that to degrade gracefully, only setting use_search_backend to False
is necessary and the view works as before.
Merge template changes in category.html back into browse.html

There's only very minor difference between the templates for the two
product category views. As the views are merged, I merged the changes of
the templates together.
Template tweaks for new browsing template

* Moved inline style decleration into LESS
* Slightly improved looks of faceting area