(#22703) Force encoding of comment value to ASCII-8BIT

The comment field for user resources can often contain non-ASCII
characters. Unfortunately, Puppet retrieves the existing value
(current_value) as ASCII-8BIT, but strings containing non-ASCII
characters are automatically turned into UTF-8, resulting in a failure
to concatenate the strings in change_to_s, with messages such as the
following in Puppet 3.2.4 with Ruby 1.9.3:

  Error: Could not convert change 'comment' to string: incompatible character encodings: ASCII-8BIT and UTF-8
  Error: Could not convert change 'comment' to string: incompatible character encodings: ASCII-8BIT and UTF-8
  Error: /User[rpinson]: Could not evaluate: Puppet::Util::Log requires a message which is due to the fact that current_value is encoded in ASCII-8BIT, but newvalue is in UTF-8 and not "softly" convertible when reaching change_to_s in property.rb.

In order to allow proper management of non-ASCII characters in the
comment field, this PR forces an ASCII-8BIT encoding on the comment
property value in the type.

Note: trying to force the encoding in Puppet code (using e.g.
inline_template) doesn't solve anything, and patching change_to_s to
force the encoding results in the resource not being idempotent anymore,
since comparison fails (but change_to_s doesn't crash anymore).
(#22703) User comment encoding: Do not munge value in place, use encoding constants
(#22703) User comment encoding: Use encoding constant
Merge branch 'raphink-dev/user_comment_ascii'

* raphink-dev/user_comment_ascii:
  (#22703) User comment encoding: Use encoding constant
  (#22703) User comment encoding: Do not munge value in place, use encoding constants
  (#22703) Force encoding of comment value to ASCII-8BIT
(Maint) Check for `encode` when using `encode`

The check used to determine if the system supported changing the
encoding of a string was looking for `force_encoding` but actually
calling `encode`. Although not currently a problem since both methods
are available at the same time, checking for the method actually used is
safer.
Docs: Mention that fqdn_rand accepts strings as seed additions
(maint) Pin racc gem to 1.4.9

racc recently released 1.4.10, which has changes which break on Ruby
1.8.7

https://github.com/tenderlove/racc/commit/c43068f0886a339c95420fb41dd896ddee66d722
https://github.com/tenderlove/racc/issues/32
Merge branch 'stable'

* stable:
  (maint) Pin racc gem to 1.4.9
Merge pull request #2005 from nfagerlund/seedstring

Docs: Mention that fqdn_rand accepts strings as seed additions
(#19447) Add :manages_symlinks to file type

 - The ensure => :link feature of the file type is now restricted by
   the :manages_symlinks feature
 - Only the existing POSIX provider allows symlink support
 - Updated relevant tests to check a provider for
   .feature?(:manages_symlinks) over Puppet.features.microsoft_windows?
 - metadata_spec.rb was refactored as RSpec nested tests can override
   their ability to run with true :if conditions. Shared examples
   intended to be run on Windows only were also being executed under
   OSX because provider feature :manages_symlinks check was true,
   despite the enclosing test scope being restricted to Windows
 - file_spec.rb unit tests had 5 new manages_symlinks guards enabled on
   tests, preventing 10 existing tests from running on Windows that
   likely should never have been run in that environment (these tests
   will be re-enabled with Windows symlink support)
(#19447) abstract File.symlink / File.symlink?

 - setup for a Windows specific implementation of creating symlinks
   and verifying if a file is a symlink
fixup with abstract File.symlink
(#19447) abstract File.readlink

 - setup for a Windows specific implementation of reading symlink
   targets
(#19447) abstract File.stat / File.lstat

 - find and replace all internal usage of File.stat / File.lstat with
   our own abstraction, that will enable a Windows specific
   implementation
(#19447): include FFI Gem 1.9.0

 - will be necessary to call Win32 APIs needed for symlink support
WIP: enable Windows symlink support
WIP: extraneous win code
WIP: Windows implementation File.stat / lstat
undo some of our lstat tests