Using a struct for the new `getter` to reduce some levels of tag dispatching
Fixes for stack's new getter to work properly in many of the cases. More fixes will be necesary...
Improvements to getter.
By returning nothing, you can return *this onto the stack.
But we should do an actual comparison (test if we're returning item == *this) to make sure we're not just throwing out a return type that is a new instance / object.
get_ptr moved to stack, because it's needed earlier than table
special_push given some new semantics, to allow for self-referencing returns (return nothing).
We'll need to deal with when it's not reference itself, but for now it looks alright.