(#2066) Add memory facts fixed in MB units

Previously memory facts were dynamically scaled, which was great
for human readability but bad for ability to use this information
programmatically. This commit adds memory facts fixed in MB which
were chosen as the smallest useful unit. Memory is given without
units attached.
(#2066) Refactor memory facts

Refactor memory facts to make general scaled facts based off of
platform-specific MB facts. Refactor similar fact definitions and
tests. Remove fact definition and creation from vmstat_find_free_memory
method definition in util/memory.rb.
(#2066) Refactor swap facts

Ensure swap size and swap free are evaluated on fact resolution rather
than at load time. Refactor facts to remove similar code.
(#2066) Add tests for AIX

Add tests and refactor code for swap size and swap free for AIX.
(#2066) Refactor memory size and memory free facts

Add methods to util/memory.rb to retrieve  memory size and memory free
based on kernel type. Remove fact definitions specified for each
platform that were identical, and make non-kernel specific facts
when possible. This removes a lot of similar code from
lib/facter/memory.rb and makes the fact definitions more readable.
Merge branch 'rlinehan-ticket/2.x/2066_make_memory_units_in_bytes' into 2.x

* rlinehan-ticket/2.x/2066_make_memory_units_in_bytes:
  (#2066) Refactor memory size and memory free facts
  (#2066) Add tests for AIX
  (#2066) Refactor swap facts
  (#2066) Refactor memory facts
  (#2066) Add memory facts fixed in MB units
(#2066) Fix facts for Linux/kFreeBSD and add tests

Make swap and memory facts in MB for Linux/kFreeBSD, as was previously
done for other platforms. Also make scaled facts depend on MB versions.
This should fix the problems encountered in the Jenkins test of the
previously-submitted code. Add tests for memory and swap facts for Linux
and kFreeBSD.
Merge remote-tracking branch 'rlinehan/ticket/2.x/2066_make_memory_units_in_bytes' into 2.x

* rlinehan/ticket/2.x/2066_make_memory_units_in_bytes:
  (#2066) Fix facts for Linux/kFreeBSD and add tests
(#2157) Add external fact support

Adds in the ability to load and parse external facts from /etc/facts.d

Initial implementation from RI Pienaar <rip@puppetlabs.com> and
improvements by Luke Kanies <luke@puppetlabs.com>
(#2157) external facts command line - bin/facter
(#2157) external facts command line - lib/facter/application.rb
(#2157) external facts command line - lib/facter/util/config.rb

Stores the ext_fact_dir in a class variable in config.rb
(#2157) external facts command line - lib/facter/util/directory_loader.rb

Directory loader uses the config ext_data_dir thing.
(#2157) external facts - lib/facter/util/directory_loader.rb

Warn instead of failing when external facts can't be loaded, do better
checkint of output.
(#2157) parser classes can register an array of extensions - lib/facter/util/config.rb
(#2157) raise error if parser doesn't implement #results - lib/facter/util/parser.rb
(#2157) Catch infinite infinite loop when loading json - lib/facter/util/parser.rb
(#2157) add support for scriptparser on windows - lib/facter/util/parser.rb
(#2157) add powershell script parser - facter/util/parser.rb
(#2157) external facts command line - install.rb

Added support for external facts in install script