Added the plug-in interface
Adding some properties for plug-ins

Added name and author properties - more may be added later.
Added the structure for the plug-in manager

The plug-in manager is responsible for finding and tracking plug-ins.
Implemented all methods except plug-in discovery

Also added an Activated property to the plug-in interface. Plug-ins are
responsible for tracking if they are active or not (since sources other
than the PluginManager class can activate and deactivate them).
Added code to safely activate and deactivate plug-ins

Exceptions thrown by plug-ins when initializing and shutting down will
be caught and reported.
Implemented an extension method for exceptions

The extension method nicely formats exception text and adds stack traces
if debug mode is enabled. The method will also show all inner exceptions
as well.
Enabled debug logging by default for debug builds

If DEBUG is defined, debug logging will be enabled by default.