Modular Logging System

Allow coders to implement their own logging system.
If we're going to go through the trouble of keeping track of we've been disposed, at least throw an `IllegalOperationException` here.