(#15464) Make Puppet.version settable via Puppet.version=
Without this patch applied the version string of Puppet is dynamically
set from the git describe tag in the Rakefile using monkey patching.
This is problematic because this causes a constant to be re-defined
which issues a warning in Ruby.
This patch fixes the problem by implementing the Puppet.version= module
method. The Rakefile will now set the Puppet version by using `require
'puppet/version' and calling Puppet.version = %x{git describe ...}`
Using a module method also has the benefit of making it easier to
intercept and mock Puppet version specific behavior.
From this point forward, the method Puppet.version should but used to
obtain the version string instead of the constant Puppet::PUPPETVERSION.