Adds support for nested structs and unions.

parser.rs
- Adds detection of nested composite fields so that they can be handled
  specially during generation (see visit_composite).
- Changes to manual recursion through Clang's cursors so that top-level
  and nested composites can be handled separately.

gen.rs
- Improves generation for nested composite types.
- Unifies handling of structs and unions somewhat.

types.rs
- Adds CompKind to distinguish between structs and unions.
- Updates CompInfo to use CompKind rather than a bool.