Add support for parsing clang::RecordDecls.

This is needed when passing std=gnu99 to clang and parsing in C mode instead of C++ mode.
Add new option Gnu99Mode in ParserOptions, passes -std=gnu99 to clang instead of c++ parameters
Fix NRE (when parsing C code in gnu99 mode)
Some hacks to make the generated C-based bindings better
Add support for flattening arrays to pointers of primitive types in CSharp generator, not finished (FieldOffset is not calculated correctly).
E.g. "byte* data[8];" becomes "byte* data_0; byte* data_1;" etc
Fix output of pointer-array flattening to include newlines between each field
Generate comments for "internal" fields in structs (in Gnu99Mode only)
Fix comment code generation to produce much cleaner output.

Everything is just wrapped in a summary block, since we don't do parsing of e.g. doxygen comments.
Fix possible nullref/cast in parser
Some more preliminary hacks for Gnu99Mode code generation
WIP hacking to get some rudimentary C-binding generation working
More WIP, fix/allow pointers to non-primitive types
More WIP, give anonymous types a "anon" typename
Remove debug code
Add TODO comment
More WIP, don't generate FieldOffset for struct fields and make structs LayoutKind.Sequential instead of LayoutKind.Explicit
WIP, hack to make generated functions public
More WIP hackery, this time to disable "const char*" becoming IntPtr instead of string
Add DebuggerDisplay attribute to MacroDefinition
Add new Value type to AST, with IValuePrinter and CSHarpValuePrinter