Returns the first element as Some, or None if the iterable is empty.
Returns the first element as Some matching the given predicate, or None if element was not found.