Add {assert,expect}_command to unittest

The new assert_command and expect_commad functions of unittest allow for
executing a command and validating any combination of its exit code, stdout
and stderr.

These new functions are added to an auxiliary module within the private
unittest subdirectory because their implementation is huge.
Add expected failures

This feature currently does not support delayed failures due to the
complexity involved in implementing them and the little value in
doing so.