Returns the last element as Some, or None if the iterable is empty.
Returns the last element as Some matching the given predicate, or None if no such element was found.