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 
Here we have to different local variables with the same and my sublime linter is complaining about it :-)  [shadowing](http://stackoverflow.com/questions/6259314/what-does-shadowing-mean-in-ruby) . We could change the outer ``node`` to ``node_match``

```Ruby
class RootToNodePath
  def self.build(category, category_tree)
    if node_match = category_tree.find { |node| node.name == category.id }
      node_match.parentage.reverse.collect(&:content) + [category]
    else
      []
    end
  end
end
```