(#22258) Create new console for each puppet run

Powershell apparently has some issue trying to share the Windows
service's console when running under ruby.exe (as opposed to rubyw.exe).
This patch causes the service to create a new console for each puppet
child it kicks off, which resolves the issue.
(#22110) set version=0 in catalog constructor so it's always an integer (not nil)
(maint) temporarily restore json-schema to Gemfile
(#22110) add initial catalog documentation
(#22110) validate some simple catalogs against json schema
(maint) fix typo in comment and clean whitespace
(#22375) Prefer raw-like serialization format

Previously, agents would backup files using PSON serialization, which is
not reliable for binary content, and incredibly inefficient due to the
applying a regexp to the entire in-memory file content.

Ideally, I would like to switch the Puppet::FileBucket::File class to
just use the `:raw` serialization format as is done for
Puppet::FileServing::Content. But this cannot be done in a minor series
without breaking compatibility between newer 3.x agents talking to older
3.x masters.

However, we can achieve the same effect by using the `:s` serialization
format, and we don't have the same compatibility problem because
the `from_s` method has been defined since 2.6.0 in commit e5a78009f.

If a newer master receives a file bucket request from an older agent
that sends a PSON encoded file, then the master will generate a
deprecation warning to update the agent.

Originally filed as #8229.
(#22375) Don't echo the backed up file to the caller

Previously, when the agent backed up a file to the master, the master
would inadvertently echo the file back to the agent in the body of the
HTTP response.

This is because the terminus' save method returned the file contents
as the 'result', and when invoked via REST, the {webrick,rack} REST
handlers automatically write the result into the response body.

Also puppet masters prior to 3.3 did not respect the Accept HTTP
header (#21427), so the master would always YAML encode the response,
which for binary content, large files, etc could result errors like
the following on the master:

    Error: Stack overflow in regexp matcher: /\A(?: # ?: non-capturing group (grouping with no back references)
                 [\x09\x0A\x0D\x20-\x7E]            # ASCII
               | [\xC2-\xDF][\x80-\xBF]             # non-overlong 2-byte
               |  \xE0[\xA0-\xBF][\x80-\xBF]        # excluding overlongs
               | [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2}  # straight 3-byte
               |  \xED[\x80-\x9F][\x80-\xBF]        # excluding surrogates
               |  \xF0[\x90-\xBF][\x80-\xBF]{2}     # planes 1-3
               | [\xF1-\xF3][\x80-\xBF]{3}          # planes 4-15
               |  \xF4[\x80-\x8F][\x80-\xBF]{2}     # plane 16
               )*\z/mxn

This commit changes the Puppet::FileBucketFile::File terminus to
return a new model instance whose content is empty. This is a change
from previously when we were returning a string, but I think it's
clearer that the result needs to be serializable using one of the
Accept content-types that the client specified, e.g. `:s`.

Originally filed as #8229
(#22110) remove empty Notes section
Docs: Clarify descriptions of "ordering" and "report_serialization_format" settings
Merge pull request #1870 from joshcooper/ticket/stable/22375-filebucket-serialization

(#22375) File bucket serialization
(maint) Explain a dead variable in puppet/util/docs.rb

I'm not sure what this was originally intended to do, but since we're hoping
this entire area of code won't exist in a year, I don't think it's worth more
action than leaving a note.
(#22432) Sort defaults/commands/features in provider doc hooks

Because hashes are unordered in Ruby, these lists would churn around randomly
each time you generated the references, making it harder to mechanically compare
two versions of the type reference. Also, if the list is long and you're
actually looking for something in it, that would make it harder to scan. So
let's sort the arrays returned by these collect calls!
Merge pull request #1877 from nfagerlund/typeref_tweaks

Sort defaults/commands/features in provider doc hooks
Merge pull request #1876 from nfagerlund/330-setting-descriptions

Docs: Clarify descriptions of "ordering" and "report_serialization_format" settings
Merge remote-tracking branch 'upstream/stable'

* upstream/stable:
  Docs: Clarify descriptions of "ordering" and "report_serialization_format" settings
  (#22375) Don't echo the backed up file to the caller
  (#22375) Prefer raw-like serialization format
Merge pull request #1861 from badgerious/fix/master/22258_failed_execs

(#22258) Create new console for each puppet run
(#22258) Create new console for each puppet run

Powershell apparently has some issue trying to share the Windows
service's console when running under ruby.exe (as opposed to rubyw.exe).
This patch causes the service to create a new console for each puppet
child it kicks off, which resolves the issue.
Merge branch 'ticket/stable/22258-create-new-console' into stable

* ticket/stable/22258-create-new-console:
  (#22258) Create new console for each puppet run
(#22110) Documentation improvements per GH review

* Note that both POST and GET are supported with some historical
  context around the introduction of POST
* Note that the response is an example, and remove the mid-example
  comments, so that the example is cleaner