Remove unused constructors.
Reworked pointer marshaling in C# and CLI.

We are now more consistent between backends, specifically we need to make sure
to avoid directly visiting the desugared type since we might lose type maps when
handling typedefs.
Remove useless code.
Improved the diagnostic for ignored fields.
Fixed regression in parsing of preprocessed entities.

Specifically we now store the pointer of the original declaration and check for duplicates.