feat: use longer path first

This patch makes the following example (from the angular.js tutorial
step 7) work.

router.root
  ..addRoute({
    'name': 'phonesList',
    'path': 'phones',
    'enter': (_) => ...
  })
  ..addRoute({
    'name': 'phoneDetail',
    'path': 'phones/:phoneId',
    'enter': (\_) => ...
  });

see: https://github.com/angular/angular.dart/pull/533
Merge branch 'routing_order' of https://github.com/technohippy/route.dart into technohippy-routing_order
Added a flag to control route sorting (enabled by default)