Return all the elements of a list except the first one. If the list is empty, return None.
Option<Iterable<T>> get tail => isEmpty ? none() : some(skip(1));