start implementing assignability / identity checkign for struct types

Since it's useful to map a StructType back to its StructTypeDecl, two
distinct StructTypeDecls get distinct StructTypes. To keep identity
checking fast, all identical StructTypes now point to the same canonical
type object, and the new function ASTContext::isIdenticalType() compares
the canonical type pointers of types instead of comparing the type
pointers directly.

Add a field_iterator to StructTypeDecl to allow the Profile() method to
walk a struct's fields.
when unique'ing structs, make sure to look at canonical types