Modular Logging System

Allow coders to implement their own logging system.
This should be in a separate file.