ImmutableStack<T>
A minimalistic implementation of an immutable stack. Add members as needed.
Represents an empty stack. default may be used instead.
Returns a new immutable stack which begins with the specified value and continues with the values in the
current stack.