Move special casing for redirect routes into RedirectRoute.
Fix plugin scopes not correctly setting their params.

The `+` operator was not working as plugin = null had already happened.
Index routes by key parameters for faster reverse routing.

By indexing routes along the main places people will partition routes
(plugin and prefix) we can make reverse routing faster by only looking
in specific route collections.

Redeclaring the same scope with different plugin/prefix values might get
hairy and may need special casing.