Allow tagged artefacts to be grouped by format type

Add a new presenter, GroupedResultSetPresenter, which will group the 
items in the provided result set by their kind/format. 

Requests to /with_tag.json?group_by=format will receive a different 
response built by this presenter, instead of the regular 
ResultSetPresenter.

For now, the list of groupings is hard-coded in the new presenter, along 
with the labels which should be returned for each group.
Sort the grouped results in the order they are defined

Each group must appear in a predetermined order, so that the most 
important content (like services) appear above other formats. 

This adds a sort operation on the grouped results to make sure they 
are arranged in the same order as the hash in which they are defined.