(#16791) Revert "Merge branch 'perf/2.7.x/backport-activesupport-hook-disabling' of https://github.com/daniel-pittman/puppet into 2.7.x"

This reverts commit 3d747177c3e3f690effe620d2f38c7a7d0f7d2d9, reversing
changes made to e45961f2a4160875ed1069b18734d3a6456af831.

This change to how puppet interacts with ActiveRecord causes problems
for systems that load puppet inside Ruby on Rails. Foreman encountered
this. Rather than introduce this change that can break existing installs
of puppet, this performance is not going to be part of 2.7.
(#16791) Revert "Maint: Fix intermittently failing spec test"

This reverts commit e45961f2a4160875ed1069b18734d3a6456af831.

This commit is being reverted in order to completely and cleanly revert
ba96917.
(#16791) Revert "Merge branch 'feature/2.7.x/json-terminus-backport' of https://github.com/daniel-pittman/puppet into 2.7.x"

This reverts commit ba969173ffad096401bc5d0df44b17324318ca03, reversing
changes made to 5e3fbcae67cfe4e3eb0564735742354bf85d79e7.

This change had introduced a new terminus for the catalog indirection
that wrote json files instead of yaml. Unfortunately the changes didn't
include actually being able to configure puppet to use this. This left
the decision about whether to backport another functionality change, or
to undo this change.

Since 2.7 is supposed to be a stable branch and should only be receiving
bug fixes, this change does not really belong in the 2.7 series. All of
the other backported performance fixes are small tweaks to existing
behavior, whereas this one provides a new set of functionality.
Therefore this change will not be made in the 2.7 series.
Eliminate `symbolize` everywhere, and remove it.

The whole `symbolize` API was confusing and complex: because it didn't do any
type enforcement, just passed through arbitrary data, we had very unclear API
in a whole pile of places.

This replaces that method entirely with a more rigid definition: we intern in
a bunch of places, add the occasional clear failure mode, and then delete the
original definition.

This eliminates one point of complexity from the codebase.

(These other uses have no notable performance penalty, just code complexity
 and clarity issues.)

Signed-off-by: Daniel Pittman <daniel@puppetlabs.com>

Conflicts:

	lib/puppet/parser/functions.rb
	lib/puppet/provider.rb
	lib/puppet/provider/nameservice/directoryservice.rb
(#16791) Re-instate deprecated symbolize and symbolizehash!

The cherry-pick of commit a09df46f58187ad9ff0f599de47cd8c1e0a417eb to
remove the use of symbolize throughout the code base also removed the
symbolize method, as well as the symbolizehash! method. The cherry-pick
was needed so that the methods could be deprecated without puppet
issuing warnings from using them.

This commit puts the two methods back and also places a deprecation
warning in them.
Merge branch 'ticket/2.7.x/16791-cleanup-performance-backports' into 2.7.x

* ticket/2.7.x/16791-cleanup-performance-backports:
  (#16791) Re-instate deprecated symbolize and symbolizehash!
  Eliminate `symbolize` everywhere, and remove it.
  (#16791) Revert "Merge branch 'feature/2.7.x/json-terminus-backport' of https://github.com/daniel-pittman/puppet into 2.7.x"
  (#16791) Revert "Maint: Fix intermittently failing spec test"
  (#16791) Revert "Merge branch 'perf/2.7.x/backport-activesupport-hook-disabling' of https://github.com/daniel-pittman/puppet into 2.7.x"