(Maint) Cleanup some scope tests

Remove the naughty "should" and move away from instance vars.
(#17190) Profile function calls

This adds profiling of function calls on Puppet::Parser::Scope objects.
(#17190) Rename Measuring to WallClock

The Puppet::Util::Profiler::Measuring is better described as a wall
clock profiler. This renames it to that.
(#17190) Genericize output format of profiler

The output format of the profile messages was tied to the specific
profiler. This updates the message and internal structure of the
WallClock profiler to allow for making the entire flow of before and
after handling of the profiler generic.
(#17190) Extract abstract logging profiler

The logging and execution aspects of the WallClock profiler are going to
be useful in other contexts as well. This extracts out an abstract
Logging base class that provides a template method for WallClock.
(#17190) Add object count profiler

This adds a new (very experimental) profiler for tracking changes in the
ruby object space object counts. In order to use it right now, you'll
actually have to modify the code since there is currently no mechanism
for selecting the type of profiler to use. I'm also not certain that the
information this profiler collects is useful, but it might provide some
insight into the changes that different sections of code cause in the
number of objects in memory.
(Maint) Remove accidentally added debug line

I had added the debug of the request parameters at some point in order
to understand what they were. That had accidentally been committed.
(#17190) Move profiling of function calls to Functions

The original place where functions were being profiled (in
Puppet::Parser::Scope) only catches the first call to the function. By
moving the profiling to the Puppet::Parser::Functions we can instrument
the generated method and therefore pick up all of the calls.