Treat autocast pointer indirection as tracepoints do
With '&' addressof, @cast, and other oddities, it wasn't always clear
whether the type die in an autocast described the given value or the thing
that value is pointing too.
Tracepoints already solved that problem, so we can reuse its is_pointer
logic. Now we always try to make the type die refer to the pointee, and
is_pointer indicates if our value is such a pointer. If not, then its an
error to try dereferencing it, for example with a direct base type.