(FACT-409) Preserve semantics of .exec

Raising an error when .exec tries to run a non-existent command is a
major backwards incompatible change. While we're on a breaking change
boundary we're trying to minimize the upgrade pain, so to reduce this
the behavior of .exec is preserved when running non-existent commands.
In the long run .exec should be deprecated in favor of .execute.