(#19514) adding servernodename variable to the compiler object

Adding a merge! method to the node object to overwrite existing client side
facts, which is then used by the compiler to force integrate the name of the
current node object into the client facts to give an in- scope 'servernodename'
variable.  Without this change, there is no in- scope variable available to
validate the identity of the node requesting a catalog.

Consider hiera lookups using $::fqdn where fqdn is a fact from the agent which
can be easily spoofed to request data for an alternative node.  Using server
side data such as $::servernodename gives unoverridable validated data to
do such lookups.