Clang has some type sugar that only serves as a way to preserve the way
a user has typed a certain type in the source code. These types are currently
not unwrapped when we query the type name for a Clang type, which means
that this type sugar actually influences what formatters are picked for a certain
type. Currently if a user decides to reference a type by doing ::GlobalDecl Var = 3;,
the type formatter for GlobalDecl will not be used (as the type sugar around the
type gives it the name ::GlobalDecl. The same goes for other ways to spell out
a type such as auto etc.
With this patch most of this type sugar gets stripped when the full type name is
calculated. Typedefs are not getting desugared as that seems counterproductive.
I also don't desugar atomic types as that's technically not type sugar.