(maint) Remove unused cruft from pops model

This removes unused code from the pops model and related factory
methods.
Also removes some stale comments and commented out code.
(#22363) Add top level Program model, and add pops AST bridge

This adds classes Puppet::Parser::AST::PopsBridge that bridges between
a top level Puppet::Pops::Model::Program and the 3x API as well
as a Puppet::Pops::Model::Expression.

These classes makes it possible to wire the model into the 3x compiler,
Resource and Type objects. The AST equivalent objects for host class,
node and definition are bypassed and these are instead handled by the
bridge.

The Puppet::Pops::Model::Program object is populated by the e_parser to
avoid having to scan for the definitions (these are now found as
references in the top level Program model that is returned by the parser
if the "program" contains any definitions, else just the body.

The Program class is transparent in all other respects (it does not have
a dump footprint, and when evaluated it just evauates its body.

The bridge classes are yet untested, but the regular tests should
pass as the new evaluator has not yet replaced the 3x evaluation.