(FACT-750) Implement hook for logged messages.

Implementing a hook for messages logged by Facter.  This will enable
clients such as Puppet to supress Facter logging in favor of displaying
logged messages in a native way.

This adds Facter.on_message which takes a block.  The block receives the
message type as a symbol (:trace, :debug, :warn, :error, :fatal) and the
message as a string.

If an on_message block is present, Facter will not log messages itself.
Another style thing: the rest of this file uses parens, e.g. this would be `subject.timing(true)`. I'm not sure if we're as consistent about this, but *within* a single file, I think it reduces cognitive load slightly to be consistent.