(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.