Maint: Don't output "No facts loaded from" during tests

Previously, running `bundle exec rspec spec/unit/memory_spec.rb` would
output the warning "No facts loaded from ...". The reason was because
the memorytotal fact is defined in a file whose name doesn't match,
and the code that forces facter to load the memory facts was within an
inner describe block.

See #7670 and commit 2255abee7b for more information about facter's
quirky loading behavior.

This commit just moves the `load(:memory)` before each to the
outermost describe block. This ensures that all of the memory-derived
facts are "preloaded" so facter doesn't print a warning that it can't
find them.
Merge remote-tracking branch 'upstream/stable'

* upstream/stable:
  Maint: Don't output "No facts loaded from" during tests
Maint: Don't load dynamic facts prior to them being added

Previously, running `rspec spec/unit/util/ip_spec.rb` would generate
`No facts loaded from` messages, because the `when_interfaces_facts_...`
method would try to load the interface-specific facts (eth0_mtu) before
the parent `interfaces` fact had created them.

This commit changes the method to evaluate the parent `interfaces` fact
instead, which results in the dynamic facts being evaluated. It also
refactors the test to not stub the private `parse!` method of the class
we are trying to test. Instead we stub the IP subclass delegate instead.
Maint: Clear memory facts now that they are loaded earlier

The previous commit moved the preloading of memory related facts to the
outermost describe block. When the inner describe block tried to preload
the swapencrypted fact, it would fail on non-Darwin systems, because the
stubs where never evaluated.

This commit clears the facts in the inner describe block as is done for
every other platform.
Merge remote-tracking branch 'upstream/stable'

* upstream/stable:
  Maint: Clear memory facts now that they are loaded earlier