Cleanup control

This provides for the ability to handle dynamic types within the same class hierarchy correctly. This is done via a poor-mans RTTI. The reason actual RTTI isn't used is because the functionality for std::type_index isn't readily available yet or I'd use it.

Until then a few intrusive macros keeps track of the type information within the AddonClass hierarchy. This way the extraneous Control methods that were only used because of python's dynamic typing can be removed which should considerably clean up the docs.