(#22530) Support both YAML and PSON

The problem with the previous version of this code was that it only
allowed the report to support exactly what the user had selected. This
is alright (for the most part) for the agent, but is incorrect for the
master since the master needs to understand both formats at once. The
remedy this the default_format is now selected based on the
report_serialization_format setting whereas the supported_formats are
always both PSON and YAML.
(#22535) cosmetic fix to an exception msg
(maint) fix mis-spelling in spec test
(#22535) correct desc for report_serialization_format

Puppet master was able to receive reports in pson format
starting in 3.2.2 due to commit ce50d4ab992efdd1edd138d2a0eb6987213dcad1.
(#22535) add puppet version to status indirector

This allows either a local or rest find on the status indirection
to return the version of puppet code.  This is especially useful
for a client communicating via the REST API.
(#22535) revert to yaml when a new agent talks to old master

With the 3.3.0 release yaml was deprecated.  However, a 3.3 agent
talking to an older master wasn't fully operational.  This change
causes a 3.3.1+ agent to drop back to yaml when talking with an
older master.  It also issues cautionary messages since the Right
Thing to do in this situation is to upgrade the puppet master.