Add additional tests

Added an easy to maintain file based test suite. Just put a
`*.h` file into the `test/data/` directory for the input and
a corresponding `*.pxd` with the same name with the expected
output.

Currently not all tests are passing.
Adding even more tests

Most of the fail, fixes are coming.
Don't do any tricks for libclang

Don't do any special tricks to find the libclang shared
library. Just make sure it's installed on a location the
system can find it set the LD_LIBRARY_PATH accordingly.
Prevent data bleeding

Somehow data bleeds from one test to another. With this commit
it doesn't happen any longer (at least not for unions)
Simplify code

It isn't a functional change, just making the code simpler.
Use field's name for anonymous structs/unions

If a struct or union doesn't have a name, it can't get a proper
mangled name when the resolving of nested structs is done. With
this commit, it will get the name of the field it is stored at.
Fix typedefs

Removing code that breaks typedefs, but doesn't break any
other tests (this doesn't mean it doesn't break anything,
but it's good enough for now).
Keeping the types short

Use e.g. `long long` instead of `long long int`.
Let functions handle their arguments

Functions handle the arguments by themself, not through a
parsed PARM_DECL. This is a good idea, since it can get
quite complex for function pointers (some arguments belong
to the function declaration, some to the function prototype.
Fix nested structures

This commit fixes nested unions/structs when they were typedefs
without a tag name.
Don't sort top-level items

Sorting the top-level items means that the include files
are not output in the original order. This can cause
problems as declaration might be made after usage.
Fix: enum as function parameter
Fix: struct as function parameter
Fix parentheses around arrays