Refactor/facter 2/extract and cleanup logging

This pull request extracts logging methods and configuration into a mixin to reduce the function overloading of the Facter module, and refactors the methods to handle specific inputs instead of trying to handle all sorts of special cases.