Improves argument name parsing in function pointers.

Previously, all function pointer types always had their arguments bound
as arg1, arg2, etc.  This change preserves the argument names, when they
are available.

parser.rs
- Uses the type cursor to visit children and gather argument names and
  types.

tests/func_ptr.rs
- Binds tests/headers/func_ptr.h and tests/headers/func_ptr_in_struct.h
  and ensures that argument names are correctly bound.
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.