[FEATURE] [PR163] Add support for parsing clang::RecordDecls.

This is needed when passing std=gnu99 to clang and parsing in C mode instead of C++ mode.
[WIP] [FEAUTURE] Add new option Gnu99Mode in ParserOptions, passes -std=gnu99 to clang instead of c++ parameters
[HAX] Generate comments for "internal" fields in structs (in Gnu99Mode only)
[WIP] Some hacks to make the generated C-based bindings better

[HAX] Some more preliminary hacks for Gnu99Mode code generation

[HAX] Hacking to get some rudimentary C-binding generation working

fix
[HAX] More WIP, fix/allow pointers to non-primitive types
[HAX] More WIP, give anonymous types a "anon" typename

Remove debug code
[HAX] More WIP, don't generate FieldOffset for struct fields and make structs LayoutKind.Sequential instead of LayoutKind.Explicit
[HAX] WIP, hack to make generated functions public
[HAX] More WIP hackery, this time to disable "const char*" becoming IntPtr instead of string
[HAX] Prevent code generator from adding IDisposable and ICppMarhal inheritance for reference types as well (previously haxed for value types)
[FIX] Don't generate classes that have CompleteDeclaration set (TODO: make this a pass?)
[FIX] Fix bug in parser related to detection of anonymous declarations.

If there was a typedef declaration of an anonymous struct (typedef struct {} X;) would be interpreted as an anonymous type (no name), and the Record would be be walked X times (X = num headers which included the header with the struct), resulting in duplicate fields.
[FIX] Fix parsing/creation of PreProcessedEntity (MacroExpansion and MacroDefinition) so that they are added to the correct TranslationUnit/Namespace
[HAX] Modify CSharpTypePrinter to print "string" for sbyte* when a function parameter
Modify Expression printing to hardcode field as const
Add new IsReturn property in Parameter class and set it when generating return parameter in CSharpTextTemplate
Modify CSharpTypePrinter to print "const char*" as "string" when in a function parameter context (not return)
Support parameter Usage property (InOut, Out) when printing pointer type in function parameter context
Modify CSharpTextTemplate so it respects type const qualifier for fields with expressions
More work on Expression type (rename BuiltinTypeExpression to PrimitiveTypeExpression and add support for different integer types and string)