exit early instead of indenting entire code block
logger: more testable and readable

adds logger.levels
populate constants from levels
extracted an anonymous function expression into log_if_level()
adds add_log_methods(), populates an object with logging methods

adds tests for log_if_level() and add_log_methods()
logger: add optional 'plugin' arg to log_if_level
Merge pull request #705 from msimerson/logger

Logger: more testable and readable