Added a patterns method to the router that takes an array of patterns

Based on the request by @ksdev-pl at #4744.

Instead of having to write Route::pattern() over and over again, you can now write Route::pattern() and pass it an array to do it more compactly. I added the patterns function instead of allowing pattern to accept an array, but I can change it if you believe it makes more sense just to have the one method.

```
Route::pattern('age', '[0-9]+');
Route::pattern('year', '[0-9]+');
```

Can now be written as 
```
Route::pattern(['age' => '[0-9]+', 'year' => '[0-9]+']);
```