Add a new test for some annoying type issues

Apparently the gdb type system doesn't really preserve typedefs, so
when you get back a VALUE or an ID, gdb treats them as an "long
unsigned int". This is somehow distinct from an "unsigned long", even
though that means the same thing.

More specifically, if you cast a value to VALUE or ID, gdb returns it
as "long unsigned int", but if you cast it as "long unsigned int", gdb
returns it as "unsigned long".

This is mostly a problem for any immediate values, which should only
be interpreted as immediates if they're a VALUE, not if they're any
type that's typedefed to "long unsigned int".

Without any way to distinguish between the actual type (VALUE, ID,
etc.), I'm not sure how to make this generally safe as a tool.