(FACT-134) Add module for normalizing fact values

This commits adds a module for normalizing fact values to UTF-8, and validating
that the string is properly encoded, e.g. a string may claim to be UTF-8
encoded, but actually contain binary data.
(FACT-134) Normalize and validate fact values

This commit normalizes fact values to UTF-8 and verifies that the resulting
encoding is valid.

On Windows, the default string encoding depends on the active code page. When
adding an environment based fact, e.g. FACTER_one=bar, the value is frozen
and cannot be encoded in place. So we dup fact values that come from the
environment.
Merge branch 'facter-2-output-validation' into facter-2

* facter-2-output-validation:
  (FACT-134) Normalize and validate fact values
  (FACT-134) Add module for normalizing fact values