Make "registerLevel" create matching functions on Loggers (#16)

Log levels are not defined as a singleton array anymore. Each
LoggerContext now references one instance of a LogLevel object,
passed around to Logger and Appender so that they can call tell
when a trace level is below another one.

Distributions typically call "registerStandardLevels" or
"registerLevel" to set the levels that they handle.

Logger instances now expose trace functions whose name match that
of the registered log levels, making levels a flexible and easy-to-use
mechanism. New trace functions are added to existing loggers when the
configuration is loaded (but this will be done as soon as
"registerLevel" is called in a later commit).
"registerLevel" propagates trace functions to existing loggers (#16)

This ensures that new trace functions are available as soon as the
"registerLevel" function returns.