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.