Add frame variable dereference suppport to libc++ std::shared_ptr.
This change allows for commands like v *thing_sp and v thing_sp->m_id. These commands now work the same way they would with raw pointers, and as they would with expression. This is done by adding an unaccounted for child member named $$dereference$$.
Without this change, the command would have to be written as v *thing_sp.__ptr_ or v thing_sp.__ptr_->m_id which exposes internal structure and is more clumsy to type.
Also, introduces API tests for std::shared_ptr, previously there were none.
ptr_sp should have a nullptr check as __ptr_ might be missing because we screw up some debug info parsing, or someone renamed the member or idk. In any case, this shouldn't crash.