*Improve general performance by making findBestAPIClass, getPossibleAPIClasses and kwargsFromSuper take kwargs as a dictionary, rather than packing the keyword arguments itself.
findBestAPIClass and kwargsFromSuper also no longer return a new kwargs, but instead just manipulate the one given.
*kwargsFromSuper now returns True if the class is supported, false otherwize. Previously it raised RuntimeError if the class was not supported. This way makes the code a bit more readable, and also stops confusion as internally code may indirectly raise a RuntimeError -- we could have made our own custom exception, but I think a boolean is suitable enough for this case.
*NVDAObjects.window.Window.parent property: get the APIClass manually as it needs to suggest relation. Perhaps we can consider DynamicNVDAObjectType.__call__ taking relation.