Better CheckDuplicatedNamesPass, GetterSetterToPropertyPass

Added CheckDuplicatedNamesPass that check all class members names for duplicated names. When a non function member has an already used name a number is append to its name. When a method is found with a know signature a number is append to its name. The appended number for each method overload is independently incremented, others members appended number start at the most overloaded method count which is then incremented with each non function member sharing the same name.

Modified GetterSetterToPropertyPass, more complex properties are supported. Now even if we only have a getter or a setter a property is created. Trying to convert multiple setters with same name and different types is an issue, so we check before creating a setter for a matching getter or the non existence of more setters.

Added OriginalNamespace to Declarations.

Minor fixes:
 -Methods generated from functions now have correct Namespace and OriginalNamespace
 -Removed class parameter from CheckIgnoreFunction, CheckIgnoreMethod and CheckIgnoreField.
 -Better template function generation, less manual fixes are needed after generation.
 -Added CheckIgnoreDecls to the to pre passes.