- Changed the way category handlers are registered a bit so that a category can't get the same handler added to it twice (i.e., from having both a parent and a grandparent with the same handler, which would happen if, for example, "Test" were registered with a handler, then "Test::Test2" were set to inherite handlers from "Test", and then "Test::Test2::Test3" were set to inherit from "Test::Test2")
- Changed levelStr parameter to log function to be a char* so there's one less string to construct
- Moved runtime level checking up higher so that arguments wouldn't be called/constructed if the log level is runtime-disabled
- Added unit tests to verify the above