(FACT-357) Raise errors when command execution fails

The behavior of returning an empty string when a command cannot be run
is surprising and makes it impossible to determine if a command failed
to run or simply had no output. This commit allows users to determine if
an error should be raised on error, or if a default value should be
returned instead. It also updates calling code to respect this new
behavior.
(FACT-357) Extract virtual fact vmware resolution