(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.
(PUP-390) Provide Puppet 3.7 config files

 - Includes different puppet-win32-ruby branch definitions for x86
   and x64, so that open source Puppet 3.7 can be built.
 - Note that a new Platform ENV variable must be set to either x86
   or x64 prior to initiating rake windows:build
(PUP-390) Ensure x86/x64 remembered properties

 - Win64="yes" will cause errors on a x86 machine attempting to install so
always use no or $(var.Win64)
 - Move RememberedInstalledDir registry key to a separate component and set it
to platform dependent setting
(maint) Store install location in uninstall key

 - This adds the install destination folder to the ARP (Add / Remove Programs)
registry key so folks searching in uninstall registry locations can see a
properly set InstallLocation key
(PUP-390) arch is more correct terminology over platform

Prefer the use of architecture over platform as it is more consistent with
other operating systems and reduces confusion on the terminology.
(PUP-390) Append -x64 to msi name

 - When the architecture is x64, append that to the name.  e.g. puppet.msi
becomes puppet-x64.msi when ARCH=x64.
- Allow a file name to be passed to the script as PKG_FILE_NAME so the signtool
cant be passed the name of the particular package for signing.
- Passing PKG_FILE_NAME to windows:build will use the name passed in as the
name of the MSI. e.g. PKG_FILE_NAME=puppet.3.6.2-x64.msi will result in a file
named puppet.3.6.2-x64.msi in the pkg folder.
 - Allow install/uninstall to use PKG_FILE_NAME to perform install/uninstall
based on name of package passed in.
Merge remote-tracking branch 'ferventcoder/ticket/master/PUP-390-Windows-x64-MSI-support'

* ferventcoder/ticket/master/PUP-390-Windows-x64-MSI-support:
  (PUP-390) Append -x64 to msi name
  (PUP-390) arch is more correct terminology over platform
  (maint) Store install location in uninstall key
  (PUP-390) Ensure x86/x64 remembered properties
  (PUP-390) Provide Puppet 3.7 config files
  (PUP-390) Add Windows x64 support to MSI