Add support for ssh-ed25519 keys
(maint) Remove monkey patch

Prior to this patch, running spec tests with ruby 2.x
would result in deprecation warnings like so:

/Users/kylo/.rbenv/versions/2.1.0/lib/ruby/2.1.0/delegate.rb:343: warning: IO#lines is deprecated; use #each_line instead

This patch removes the monkey patching that led to those
warnings, and simply changes the code to use each_line rather
than lines, which is apparently supported in all the ruby versions
from 1.8.5 to 2.x.
(refactor) Remove double negation from resolution confine check
(maint) clean up Facter::Application#run

Move requires to top level, simplify how facts are sorted
(FACT-159) Extract facter command line formatting

This extracts facter's command line formatting to a separate file and
calls out plaintext formatting as a specific case. This allows us a
clean way of removing the plaintext behavior as we move towards
structured facts.
Merge pull request #577 from adrienthebo/facter-2-output-formatting

Facter 2 output formatting
Merge pull request #586 from jasperla/sshed25519key

Add support for ssh-ed25519 keys
Merge pull request #589 from kylog/maint/remove-monkey-patch-and-eliminate-spec-warnings-with-mri-2_x

(maint) Remove monkey patch
(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
Merge remote-tracking branch 'upstream/facter-2'

* upstream/facter-2:
  (FACT-134) Normalize and validate fact values
  (FACT-134) Add module for normalizing fact values
  (FACT-159) Extract facter command line formatting
  (maint) clean up Facter::Application#run
  (refactor) Remove double negation from resolution confine check
  (maint) Remove monkey patch
  Add support for ssh-ed25519 keys

Conflicts:
	lib/facter/ssh.rb
	spec/unit/util/resolution_spec.rb