Returns the option if it contains a value, otherwise calls op and returns the result.
op
Option<T> orElse(Option<T> Function() op) { return isSome() ? this as Some<T> : op(); }