(FACT-65) Extract Resolvable and Suitable mixins

The Facter::Util::Resolution class contained behavior for determining if
a resolution was suitable, the precedence of the resolution, code for
safely resolving values, and code for actually resolving information.
This commit breaks up the Resolution class into a Suitable mixin for
determining if a resolution can run and the precedence of that
resolution, and a Resolvable mixin for handling behavior around the
resolution of a given fact.
(FACT-65) Add directed graph for handling dependencies
(FACT-65) Add aggregate resolution class