Handle $redirect to a route with parameters

Test $redirect by trying to match it to a route, which enables passing $redirect that contains parameters. If match() returns NULL then we assume the $redirect parameter contains a named route, as was the case prior to this commit.
I know that security problem pretty well. My point is:: after you have matched request to route, the url will not surely be of an external site. After you have matched request to a route,
```php
return $this->redirect()->toRoute(
    $routeMatch->getMatchedRouteName(),
   $routeMatch->getParams()
);
```
This will be identical to : 
```php
return $this->redirect()->toUrl($redirect);
```