Improved VS paths lookup checking.

This fixes a bug that happened when you had multiple versions of VS installed and your highest version did not provide the native development SDK.
Renamed Hello tests to Basic.
Added virtual table tests.
Added virtual function overriding support to the C# backend.
Fixed VS lookup to use the first valid VS version found. This makes sure we use the oldest VS version since Clang will not yet work fully with newer (2013+) MSVC headers.
Added config variable to the the build.
Run the CheckAbiParameters pass after CheckOperatorsOverloadsPass since the latter can change the signature of the methods which can affect the correctness of the first pass.
Return the result of VisitDeclaration in TypeIgnoreChecker.VisitClassDecl.
When generating tests glue, wrap the declaration in a namespace with the library name, this makes sure there are no conflicts between native and managed types.
Better stubs (that actually compile) for std::wstring in C# backend.
Added a stub for std::vector creation.
Implemented type printing support for PrimitiveType.IntPtr.
Rework the handling for functions that need hidden structure parameters.

The main changes are:
 - The original return type is now kept as the type of the generated parameter
 - The return type of the function is set to void to represent what is actually happening.

This also fixes a bunch of bugs related due to using the wrong return type in some places.
Use a different generic type variable name that does not conflict with the parent one.
Cleaned up using declarations.
Rework class fields generation in the C# backend to be simpler and behave correctly under more situations.
Reworked C# type printing and marshaling to keep the root full type in the respective contexts.

This allows us to access the root type in the type maps to do proper handling of pointers. It's a bit of an hacky approach and it will be improved once there is a better more general type matching framework.
Fixed type printing of hidden structure parameters in C#.
Minor code cleanups.
Fixed handling of field properties in C# backend.