give anonymous pointer fields the right type

Also teach PromotedFieldPaths::lookupInBases() to look through pointer
types to keep promoted pointer field lookup functional.
add a test for promoted field lookup with non-struct embedded fields
set canonical type for pointer types correctly