(#21427) Issue deprecation warning for b64_zlib_yaml
(#21427) Improve deprecation warning for yaml params

Previously we were not informed what parameter and value was being
transmitted as YAML, which made debugging and correcting the problem
nearly impossible. This outputs the offending request parameter and
value as a debug message to aid in fixing the issue.
(Maint) Cleanup do_save specs

This replaces the excessive mocking in the do_save specs with using
actual implementations and removes mocking on the class under test. By
doing so there are many fewer tests required and the remaining tests are
more directly related to externally observable behavior. This has only
been done for the do_save method.
(#21427) Respect Accept header for save

The REST save action will now respect the formats that are requested in
the Accept header. In order to retain backwards compatibility for
clients that have never been required to specify an Accept before this
it will also default to :yaml when no Accept is provided. If an Accept
is provided but none of the wanted formats are suitable an error is
raised, just like find and search.

In order to report the status of an unkown Accept header correctly this
also adds the capability of raising web related exceptions that contain
the HTTP response code that needs to be used.
(#21427) Respect Accept header for destroy

The REST destroy action will now respect the formats that are requested in
the Accept header. In order to retain backwards compatibility for
clients that have never been required to specify an Accept before this
it will also default to :yaml when no Accept is provided. If an Accept
is provided but none of the wanted formats are suitable an error is
raised, just like find and search.
(#21427) Remove duplicate handling of accept headers

When the save and destroy actions started respecting the accept header
we duplicated how accept headers were handled for selecting the response
format. This removes that duplication and in putting specific tests in
place, cleans up the tests to work mainly through the public interfaces
as well as putting in place an HTTP error handling mechanism that allows
the request handlers to more specifically control the HTTP responses.
Invalid Accept headers will now cause a 406 response instead of the
previous 400.

Since all of this is tested with the memory terminus, it needed to be
expanded to also handle search and head actions.