(maint) refactor solaris virtual fact to use timeouts

The previous implementation of the solaris virtual fact used a
resolution inside of a resolution because the original author (me)
didn't know that the executed code already _was_ a resolution. This
commit deduplicates the resolution and makes the entire resolution
timeout like one would expect.
(FACT-273) Resolutions should be able to reference their facts

The fact-resolution relationship is one to many, and there is
information in the fact that we need in the resolution. This commit
directly couples facts and resolutions for this purpose.

This commit also adds a healthy refactoring of the fact and resolution
tests to use modern rspec expectations and use imperative phrasing in
specifications.
(maint) Add more context when resolutions fail to evaluate
Merge pull request #633 from adrienthebo/refactor/facter-2/associate-facts-and-resolutions

Refactor/facter 2/associate facts and resolutions