Add Ignore property to MapAttribute, emit structure definitions in correct order

* [Map (Ignore=true)] can be used to ignore a field when generating the C wrapper structure. This is useful for structures with LayoutKind.Explicit.

* When emitting the C wrapper structures make sure all needed types are emitted before emitting a structure.

This changes are needed for https://github.com/mono/mono/pull/221