Raise exceptions when scopes and routes have conflicting parameters

Having a scope contain a route with different parameters is most likely
a mistake. In addition it will defeat optimizations for reverse routing.
Add a small optimization for reverse routing.

There is no reason to check the routes of a collection if the scope
parameters don't intersect with the URL parameters.
Sort routes when scopes are connected.

This solves errors/performance issues when Router::url() is called
before Router::parse().
Fix error in Router::redirect().

Type warnings would be emitted when redirect() was called with a string
target.