Merge pull request #145 from ddobrev/master

Improved the marshalling of arrays
Updated the LLVM build paths to the latest version.
Reworked the C++ parser structures to use some helper macros to ease the bindings.
Added a new option to the build to choose between parsers.
Fixed the parser build setup code to work with the new options.
Updated the MSVC build flags to disable some useless warnings in Clang.
Fixed the ParserGen build script to use the SetupParser helper function.
Regenerated the C++ parser bindings.
Updated the C++ parsers to the latest Clang.
Fixed the C++ parser to properly parser libraries.
Fixed a bug in ASTRecord that made us infinitely recurse in some code.

Basically we should not visit a declaration if we are visiting from a type.
Some fixes to the codebase to work correctly with the new parser bindings.
Fixed a C# generation crash with set-only properties.

We cannot use the getter return type because it might not exist (setter-only property). Use the setter's first (and only) parameter return type instead.
Fixed wrong property setter type for some declarations.

Some operators, like operator[], actually need the getter return type.
Generated correct v-tables when using the Itanium ABI.

Signed-off-by: Dimitar Dobrev <dpldobrev@yahoo.com>