[5.0] Added Callable Wheres On Route

Example of usage:
```php
$router
	->get('/{page}', function(){
		return 'a page';
	})
	->where(function($route, $request){
		$slugs = ['about', 'tos'];
		return in_array($route->page, $slugs);
	});

$router
	->get('/{post}', function(){
		return 'a post';
	})
	->where(function($route, $request){
		$slugs = ['hello-world'];
		return in_array($route->post, $slugs);
	});
```

A huge number of projects needs this feature. Before callable wheres we used some regex "hacks" with slugs separated by |, or a ugly foreach. Ex:
```php
$slugs = Page::lists('slug');
foreach($slugs as $slug){
    Route::get('/'.$slug, function() use($slug){
        return View::make('page')->with('slug', $slug);
    });
}
```
Please order these like this:

```php
...
use Illuminate\Http\Exception\HttpResponseException;
use Illuminate\Routing\Matching\CallableWheresValidator;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
```