(#22593) Fix interpolation issues in future parser lexer (braces/kw)

The lexer did not honor nested braces inside an interpolation of a
puppet expression. This is bad because it leads to strange errors due to
the lexer telling the parser a lie. the fix ensures that end of
interpolated expression is based on balanced braces.

The interpolation functionality that the first bare word is a variable
is troublesome when wanting to use expressions like if, case, unless,
true false, as they become variable references. This changes the
behavior to interpret these as expression keywords instead of variable
names. Users who insist on using keywords as variable names should if
they need to interpolate $if, use either "$if" or "${$if}".

Test are added to cover these cases.
(#22699) set value_collection for boolean params
(Maint) Fix indentation
(#22593) Combine LBRACE handling into single rule

The LBRACE handling used to be split into two parts which made seeing
what an '}' character meant harder to follow and caused some duplicate
code, which only executed dependent on the order in which the lexer
tried to match the tokens. This combines the two cases together and
removes unneeded conditions.
Merge pull request #1958 from zaphod42/hlindberg-issue-22593-brace-kw-interpolation

(#22593) Fix interpolation issues in future parser lexer (braces/kw)
(#22529) Handle no package message for different dpkg-query versions

dpkg-query changes it's notification of missing package between versions
1.15 and 1.16.  We were testing for the earlier variant 'No packages
found matching'.  This change also handles the later variant of
'dpkg-query: no packages found matching'.

Also, sigh.
Merge pull request #1960 from jpartlow/issue/stable/22529_package_query_should_not_warn_for_later_versions_of_dpkg_query

(#22529) Handle no package message for different dpkg-query versions
Merge pull request #1947 from djmitche/bug22699

(#22699) set value_collection for boolean params
(maint) Test of resource package does-not-exist checks stderr

The acceptance test validated stdout, but did not validate absence of
errors logged on stderr.  This fixes that.
Merge branch 'stable'

* stable:
  (maint) Test of resource package does-not-exist checks stderr
  (#22529) Handle no package message for different dpkg-query versions
Serialize timestamp in Puppet::Node::Fact using iso8601
(maint) Split to_pson_data_hash into generic to_data_hash component

Split out the parts generating a hash of the object itself from adding
document_type metadata.

Also split out for all resources that generated the hash directly inside
the to_pson method.
Add msgpack serialization format

Use a feature to check for existence of msgpack library and add the
serialization format if it is supported.
Add to_msgpack on format_support and require where needed

Add to_msgpack back to serializable objects. They all have the same
implementation. The issue is nested objects; if an object with no msgpack
implementation is contained in the "data hash" then msgpack will try to call
to_msgpack on it. The alternative is to make sure there are only nested
hashes, but this is not backwards compatible with the pson formats.

Also strips out the internal fact _timestamp from the node object as
that is of type Time and cannot be serialized.
Move Confine out of Provider
Stub Confine at old location

Provide backwards compatibility for code including the old confine
location inside provider.