Haacked/RouteMagic — pull request #12 by psantiago (2014-05-27 12:30:37+00:00)
Title: Query String rerouting and optional action to call during rerouting

Updates RedirectRoute class which handles query strings in redirects, and allows for a specified Action to call during redirects, which may be helpful during logging.

For Example:
```C#
var defaults = new
{
controller = "Home",
action = "Index",
id = UrlParameter.Optional
};

var newRoute = routes.MapRoute("Default_WithStreet", "Street/{controller}/{action}/{id}", defaults);
routes.Redirect(r => r.MapRoute("Default", "{controller}/{action}/{id}", defaults)).To(newRoute);
```

With this route config, Home/LivingRoom?furniture=Couch will automagically be rerouted to Street/Home/LivingRoom?furniture=Couch, whereas RouteMagic would redirect instead to just Street/Home/LivingRoom.

Additionally, we can supply an action to run during a redirection:
```C#
routes.Redirect(r => r.MapRoute("Default", "{controller}/{action}/{id}", defaults), onRedirectAction: SomeImportantAction).To(newRoute);

...

public static void SomeImportantAction(RequestContext context, RedirectRouteExtended rre)
{
Logger.Info("Redirected: " + context.HttpContext.Request.Url.AbsoluteUri);
}
```

And 'SomeImportantAction' will be called whenever the redirect happens. Squeeeeeeee!