Remove public constructors from LogLevel

LogLevel class provided a public constructor LogLevel(String, Integer) but most methods assumed that only certain values were acceptable, similar to a enumeration.

For this reason the public constructors were hidden removing the possibility of creating invalid LogLevel instances.

* Public constructors were turned into private.
* CompareTo(Object) method in LogLevel now handles null input.
* Significant number of unit tests added to increase coverage on LogLevel class.