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
This is absolutely NOT ok. The request/response should be fetched from the application during callback execution time. To give you an idea of why this may break, try using something like ```php
$application->expects($this->at(0))->method('getRequest')->will($this->returnValue($request1));
$application->expects($this->at(1))->method('getRequest')->will($this->returnValue($request2));
```