Add optional matching to first()

This PR adds an optional parameter to `Sequence::first()` to match. Basically, `first($f)` is a shorthand for `filter($f)->first()`.

```php
Sequence::of([1, 2, 3])->first()->get();                                       // 1
Sequence::of([1, 2, 3])->first(function($e) { return $e % 2 === 0; })->get();  // 2
```