Add a new simplified routing engine for use with the new feature architecture.

Instead of a single, centralised routing engine, we will instead give each
feature its own route table. This means that individual features can specify
their own routing engines if they so wish.

This new routing engine is also simpler because it is decoupled from the feature
class itself. The tests also only test the interface to the routing engine,
whereas with the old version they were unnecessarily concerned with its internal
mechanism.
Rename Routes to LegacyRoutes in Feature.
Remove superfluous legacy IRouteRegistry interface
Make legacy namespace explicit.
Remove predicate from route specification

We're going to make that a part of the IRouteTarget implementation instead.
Route table can store multiple targets for each node.
Remove predicate from legacy routes.
Add new style routes to features
Remove ambiguous route test fixture.

Routing ambiguities are not well defined as yet and the logic has changed anyway
so testing here is not appropriate. In any case, we should be testing this
behaviour in the routing tests, not the lifecycle tests.
Replace old routing functionality with new.
Merge branch 'master' into feature/spark