Changed function/method return types to be qualified types.
Changed events parameters to be actual parameters rather than just types.
Added parsing of access specifiers in methods.

This lets us keep track of groups of methods in the order they were declared in the native class which is useful to bind some libraries, like Qt which uses non-standard constructs like Q_SIGNALS. Since we now also keep track of macro expansions in declarations this gives us the information needed to deal with those cases correctly.
Fixed the FindHierarchy to walk the declarations top-down instead of bottom-up, which is the expected behavior for the users of this method. This makes sure when searching for methods we find the one from the top classes first, instead of the base ones.
Fixed the IsProcessed property to deal more robustly with declarations that are missing namespaces.
Use the previously declared local variable.
Added support for variables to CheckIgnoredDecls pass.
Added support for events to CheckIgnoredDecls pass.
Respect the type map information when checking for ignored types.
Refactored the internal function generation code to collect all the declarations first and only then generate the needed functions. We also store them in a set to deal with duplicated entries.
Collect the get/set methods used in properties so that we generate the needed internal function declarations.
When generating the setter method of a property, use the first method parameter type as the type for the setter.
Use Helpers.SafeIdentifier when sending parameters to marshaling to deal with invalid identifiers.
Check for not processed or explicitly ignored functions instead of just ignored, since ignored also checks for IsGenerated which is incorrect in this instance (eg. we dont want to generate wrapper methods for getters, but we still need their internal declaration for properties).
Remove unused virtual function as it's been removed from up-to-date Clang APIs.