Added module destroy code

Modules should handle their own destruction/keep track of events/pre
change states. If there is no destroy() then we simply remove it from
the module namespace & set it loaded to false