Add IterateModules method.
Make DeferFunctionCall part of AddonObject.
Rename timer to RepeatingTimer. Consistency is key!
Store timers by name rather than handle.

This simplifies stopping timers and removes local value creation when creating a timer to store it's handle. Note that if no name is provided then name defaults to "DefaultTimer" with handle appended to the  end.
Update StartTimer in Tests to pass a timer name parameter.
Remove string "DefaultTimer" from the timer name variable.

This will use the tables address instead by default. Also add back a return value.
Make Print and Debug handle nil value cases.
Remove FrameworkVersion and FrameWorkName variables since they are pointless for the most part.
BUGFIX: Call DispatchMethod in StopAllTimers after timers have actually been stopped.
Change call DispatchMethod call to OnFullyLoaded to OnEnable. Consistency people! Remove irrelavent FIXME tag.
Use DebugEnabled instead of IsDebugEnabled .  Add check for single argument nil value case. Call Printf instead of DebugPrintf.
Remove DebugPrintf function.
BUGFIX: Change text to txt
Print a message when enabling and disabling debug mode.
Update Printf to a clearer error message.