(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.
It seems to be generally more idiomatic ruby to have `when` indented to the same depth as `case`. I see this generally in the puppet code base, and it shows up at https://github.com/styleguide/ruby. (Don't construe my referencing that styleguide as a blanket endorsement of everything contained therein :)