LogFactory Class Refactored

* New inner class LoggerCache added. It encapsulates the operations
around Dictionary<LoggerCacheKey, WeakReference> loggerCache
* The LoggerCacheKey class now implements the
IEquatable<LoggerCacheKey>. This can potentially help performance in
cases it is invoked
* Removed the configLoaded private property and simplified the branching
logic as it was always checked in conjunction with the state of config
property.
* Removed ReconfigExistingLoggers(LoggingConfiguration) internal method.
ReconfigExistingLoggers(LoggingConfiguration) was merged into
ReconfigExistingLoggers() public method. This is because the internal
one was always invoked with parameter value of this.config
* Renamed DisableLogging() and EnableLogging() methods in LogManager
class to SuspendLogging() and ResumeLogging() respectively. This will
align the naming with Microsoft conventions (see Control.ResumeLayout
method). The DisableLogging() and EnableLogging() were marked as
obsolete.
* Comments and code reformatted.

**[Note]** The name changes on DisableLogging() and EnableLogging() methods affect the public interface.