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 
Inheriting from core classes is kinda dangerous, and comes with not insignificant overhead.
See:
- http://words.steveklabnik.com/beware-subclassing-ruby-core-classes
- http://tenderlovemaking.com/2014/06/02/yagni-methods-are-killing-me.html