New redirect strategy

I change the way the redirect strategy works.
The redirects from authenticate/logout actions are now callbacks.
This way the user can overwrite the default callback and decide **exactly** what to should happen.

ping @Ocramius

closes #479
closes #476
closes #473
closes #469
Shouldn't be built with the `RouteMatch`, nor with the `Request` or the `Response`.

Those should all be fetched from either the application (passed in as a dependency) or from an `MvcEvent` passed in as callback parameter.

This allows usage of the `RedirectCallback` multiple times.