(#22906) remember properties during upgrade

In previous versions of puppet, we did not overwrite existing settings. Now
that we are with the work done in #20281, we have found that the way we are
doing the remember me property doesn't work with the way we were doing
default values. This change fixes the default values to move them to a
customaction that happens just after the commandline / registry search to set
the value. If there is still no value, then the value is set to a default.
This happens prior to the GUI so a value from the registry or supplied on the
command line will show up as the value in the UI boxes.
Merge branch 'ticket/master/22906-ensure_remembered_properties' of git://github.com/ferventcoder/puppet_for_the_win

* 'ticket/master/22906-ensure_remembered_properties' of git://github.com/ferventcoder/puppet_for_the_win:
  (#22906) remember properties during upgrade
(maint) test-installer.ps1 PowerShell msi tester

 - simply run test-installer.ps1 to have 14 different installer
   command line parameter variations executed / tested including:
   - no parameters
   - accounts using . as a domain
   - accounts using the local hostname as domain
   - LocalService
   - NetworkService
   - variations of installer startup type
Merge pull request #62 from Iristyle/maint/master/test-installer

Simple test script for built MSI
(maint) Set the Mcollective version correctly

Windows packaging was not updating the mcollective.rb file with the
version information from the Mcollective Rakefile. This commit adds
logic to read the version from the Rakefile and update mcollective.rb
Merge pull request #63 from shrug/mcollective_version_fix

(maint) Set the Mcollective version correctly
(bug) Missing end in windows.rake
Merge pull request #64 from shrug/mcollective_version_fix

(bug) Missing end in windows.rake
(bug) Turn version_regexps into an instance variable

An earlier commit is using version_regexps outside of
the original method scope. This turns version_regexps
into a rake instance variable.
Merge pull request #65 from shrug/mcollective_version_fix

(bug) Turn version_regexps into an instance variable
(bug) Trying to use "flags" hash in the wrong scope
Merge pull request #66 from shrug/mcollective_version_fix

(bug) Trying to use "flags" hash in the wrong scope
(PUP-2812) Update FFI License to BSD

 - Update FFI License information provided from LGPLv3 to BSD.
(maint) remove sys-admin license

 - As of Puppet 3.7.0 we will no longer be using this library, so it's best to
   remove the license.
(PE-4699) Ensure PEVERSION constant is defined

Previously, the windows rake task was transforming lib/puppet/version.rb from:

    if File.readable? PEBuildFile and !File.zero? PEBuildFile
      PEVERSION = File.new(PEBuildFile).gets.chomp
      PUPPETVERSION = "3.6.2 (Puppet Enterprise #{PEVERSION})"
    elsif File.readable? PEVersionFile and !File.zero? PEVersionFile
      PEVERSION = File.new(PEVersionFile).gets.chomp
      PUPPETVERSION = "3.6.2 (Puppet Enterprise #{PEVERSION})"
    else
      PUPPETVERSION = '3.6.2'
    end

to

    if File.readable? PEBuildFile and !File.zero? PEBuildFile
      PEVERSION = File.new(PEBuildFile).gets.chomp
      PUPPETVERSION = "3.6.2 (Puppet Enterprise #{PEVERSION}) (Puppet Enterprise 3.3.0-rc2-409-gb3a28f9)"
    elsif File.readable? PEVersionFile and !File.zero? PEVersionFile
      PEVERSION = File.new(PEVersionFile).gets.chomp
      PUPPETVERSION = "3.6.2 (Puppet Enterprise #{PEVERSION}) (Puppet Enterprise 3.3.0-rc2-409-gb3a28f9)"
    else
      PUPPETVERSION = '3.6.2 (Puppet Enterprise 3.3.0-rc2-409-gb3a28f9)'
    end

Note that (Puppet Enterprise ..) is repeated twice for two of the
cases. This fortunately is not a problem, because the PEBuildFile and
PEVersion file are under '/opt/puppet' and don't exist on Windows.

Also note that PEVERSION is missing in the else case. This is problem
because the PE PMT requires the constant to be defined.

This commit changes the transformation to:

    if File.readable? PEBuildFile and !File.zero? PEBuildFile
      PEVERSION = File.new(PEBuildFile).gets.chomp
      PUPPETVERSION = "3.6.2 (Puppet Enterprise 3.3.0)"
    elsif File.readable? PEVersionFile and !File.zero? PEVersionFile
      PEVERSION = File.new(PEVersionFile).gets.chomp
      PUPPETVERSION = "3.6.2 (Puppet Enterprise 3.3.0)"
    else
      PEVERSION = '3.3.0'
      PUPPETVERSION = '3.6.2 (Puppet Enterprise 3.3.0)'
    end
Whitespace cleanup
(PE-4699) Tighten regex slightly

This commit makes the version regex a little more explicit, limiting it
to literal periods and digits instead of digits and all printable
characters. It also adds an optional whitespace match between the
version and the pe_version.
Merge pull request #69 from haus/ticket/master/PE-4699

(PE-4699) Ensure PEVERSION constant is defined
Merge pull request #67 from ferventcoder/ticket/master/PUP-2812-update-ffi-license

(PUP-2812) Update License.rtf
(PUP-390) Add Windows x64 support to MSI

 - Track the current Platform in an environment variable.  Pass it to
   candle.exe for both the -arch switch AND as the Platform variable
   used in puppet.wxi, that is part of the Package definition in
   puppet.wxs
 - Add additional variable declarations to puppet.wxi that are platform
   dependent and will change the Win64 yes / no value, the installation
   folder and some additional installer text variable as appropriate.
 - Ensure that platform dependent components from puppet.wxs have the
   win64 yes/no value set appropriate.  Since we will not support x86
   and x64 side by side installs, ensure that we always read/write
   32-bit registry values for remembering previous installer config
   values.  * Except for the INSTALLDIR which should be x86 or x64
   specific.