Allow disabling of the Logger.

By default the Logger tracks a disabled state and once enabled is unable to be disabled.  Disabling also doesn't seem to do anything by default, so I've included guards to stop the Logger from trying to do anything.

This is useful for testing environments where tests crash because of lack of tail recursion.