(FACT-710) Prefer 64-bit powershell

Previously, facter would execute 'powershell.exe' for external powershell
based facts. However, when running in 32-bit ruby, this executes 32-bit
powershell, which behaves very differently than 64-bit powershell due to
them having different PSModulePaths. As a result, there are many times where
a user could execute the powershell script from the command line, but the
same script would fail when executed by facter.

This commit changes the powershell parser to prefer the 64-bit powershell
using the sysnative alias. If that doesn't exist, we fall back to the system32
directory (in case powershell is not in the PATH), and finally fall back to
an unqualified 'powershell.exe'. This follows the convention adopted in the
powershell module[1]

[1] https://github.com/puppetlabs/puppetlabs-powershell/blob/1.0.3/lib/puppet/provider/exec/powershell.rb#L6-L13
Merge pull request #799 from kylog/issue/fact-695-revert-floats

(FACT-695) Revert additions of number as types for memory facts
Merge pull request #800 from joshcooper/ticket/stable/FACT-710-64-bit-powershell

(FACT-710) Prefer 64-bit powershell
(FACT-699) Create system32 fact to resolve native system32 directory

Adds a `system32` fact which resolves the "real" system32 directory for both
32 and 64-bit ruby versions. This way you can write a manifest that simply
does:

    exec { "$::system32\\cmd.exe ...": }

and it will always execute 64-bit cmd.exe on 64-bit operating systems,
regardless of the ruby architecture facter happens to be running on.

Note the fact is implemented by stat'ing the filesystem, because there is no
CSIDL constant that resolves to sysnative. For example, Dir::SYSTEM resolves to
'C:\Windows\system32' and Dir::SYSTEMX86 resolves to 'C:\Windows\SysWOW64',
but there isn't a Dir::SYSNATIVE.
(FACT-699) Add `rubyplatform` fact

Adds a rubyplatform fact so that manifest authors that need to customize
behavior for 32 vs 64-bit ruby can do so, e.g.

    if $rubyplatform =~ /x64/
      # 64-bit
    else
      # 32-bit
    end

On Windows, common `rubyplatform` values are:

    i386-mingw32
    x64-mingw32

On Linux:

    x86_64-linux
Merge pull request #801 from joshcooper/ticket/stable/FACT-699-system32

(FACT-699) Add `rubyplatform` and `system32` facts
Merge branch 'stable'

* stable:
  (FACT-699) Add `rubyplatform` fact
  (FACT-699) Create system32 fact to resolve native system32 directory
  (FACT-710) Prefer 64-bit powershell
(doc) facter.json schema

Added facter.json schema change notes to indicate
that when new facts are added, they should also be
included in the file to pass acceptance tests.
(FACT-699) include new facts in facter.json

This adds the schema of new `rubyplatform` and
`system32` facts to facter.json.
Merge branch 'stable'

* stable:
  (FACT-699) include new facts in facter.json
  (doc) facter.json schema
(FACT-720) Memoize WMI query results

Previously, facter would execute the same WMI queries repeatedly, which is
very slow, as in facter takes nearly 10 seconds to execute.

This commit memoizes the WMI query results, resulting in facter executing in
less than 4 seconds.

Note the IP related facts still query for their specific property on the
adapter, e.g. select IPAddress FROM Win32_NetworkAdapterConfiguration,
select IPSubnet, select MACAddress, etc. Additional speedup could be attained
by reworking the ip related facts to return all necessary properties in
one query, but is too much work to justify the gain.
Merge pull request #802 from joshcooper/ticket/master/FACT-720-memoize-wmi-queries

(FACT-720) Memoize WMI query results
Revert "Merge pull request #802 from joshcooper/ticket/master/FACT-720-memoize-wmi-queries"

This reverts commit 5f5827d3917a60d489caa6cf7c636c66da707243, reversing
changes made to 89a183d887e15f44c084231d248f9e2a386b28cf.