Improve header file parsing

This moves the C header file parsing into a separate object and expands it to cover a broader range of constructs that are found in the libgit2 headers.

Specifically:

* Improves support for definitions that are broken across multiple lines (since it is no longer line oriented, but instead splits the file at `/**` comment block starts)
* Adds support for function pointers in a variety of contexts
* Adds support for inline comments within structs, enums, etc.
* Adds parsing a series of commonly named #defines as if they were actually an enum

This should help with https://github.com/libgit2/libgit2/issues/718

Right now, I am not seeing any regressions in my testing of this, but I'd like to have more eyes on it before we actually do anything with it.