Refactor breadcrumbs

Currently the trail of breadcrumbs involves logic spread across a number of areas. This attempts to consolidate and simplify it.

Some discussion around the classes created under ``app/domain`` could be useful; I ended up using a syntax along the lines of  ``DomainObject.new(params)`` rather than ``DomainObject.new(params).call`` which has been the convention so far with our service objects.

@andrewgarner @gjvis @jongilbraith 
How about `item.categories.one?`