(#23109) Document PSON

PSON is a small varation on JSON that allows binary data to be encoded.
This document explains what PSON is and how it differs from JSON.
(Maint) Fix broken link to Facts documentation
(Maint) Group service documentation

The service documentation can be better presented if it is grouped
together into logical chunks.
(#23109) Document the MIME type use for PSON
(Maint) Standardize on how we refer to the response format

We were using several different ways of referring to the response
format. This tries to make them all the same style.
(Maint) Update Report docs to be like others

The Report documentation was different from the format of the other
documentation in several places. This works to make it the same style.
(Maint) Reference resource_type schema

The resource_type schema was not being referenced by the documentation.
This does that and moves descriptions of the fields to the schema.
(Maint) Unify style for refering to schema
(#23109) Clarify what control characters are

This clarifies the range of bytes that constitute the ASCII controll
characters. It also fixes a few typos.
(#23109) Fix typo
(Maint) Fix up errors in json schema

A few misplaced commas, a few unescaped quotes...
(#23109) Expand example to include all encoding forms

The previous example only showed invalid unicode, but not the other
forms of encoding. This expands it to show the single byte (using the
invalide unicode), the 2 byte (with 0x08) and the 6 byte (using 0x07)
forms.
(#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) Puppet::FileSystem::File#symlink(?)

 - All calls to File / FileTest class methods symlink and symlink? go
   through instance methods on the new FileSystem::File abstraction so
   that the implementation can later be swapped for a Windows specific
   one to support symlinks
(#19447) Puppet::FileSystem::File#readlink

 - All calls to File readlink go through the new
   FileSystem::File abstraction so that the implementation can later
   be swapped for a Windows specific one to support symlinks
(#19447) Puppet::FileSystem::File#stat / lstat

 - All calls to File class stat / lstat go through the new
   FileSystem::File abstraction so that the implementation can later
   be swapped for a Windows specific one to support symlinks
(#19447) Puppet::FileSystem::File.exist?

 - All previous File and FileTest calls to exist? or exists? go through
   the new FileSystem::File abstraction so that the implementation can
   later be swapped for a Windows specific one to support symlinks
(#19447) FileSystem::File#exist? calls self

 - Existing code uses PathName#exist? which is insufficient for
   symlinks on Windows
Merge pull request #2047 from Iristyle/ticket/master/19447-windows-symlinks-1-abstraction

(#19447) Phase one, manages_symlinks feature, FileSystem abstraction
Merge pull request #2046 from zaphod42/feature/master/23109-document-pson

(#23109) Document PSON