REVIEW: (FACT-472) Synchronize with facter-2 branch

This commit synchronizes master with facter 2, based on facter-2 commit
ba1ed9b2bc6aa7127eb30b01719697ba07cf2336. The diff for this commit is
based on the output of `git diff master facter-2 | git apply -`

Taking the git apply route is a bit of a sledgehammer approach; we can do this but we need to consider the implications of this very closely before we merge this.