(QENG-514) Provide the Command Beaker was Ran with in Debug Output

This prints at the end of the run the application & arguments to stdout
if log level is debug *or* if the run failed.
Do not destructively consume ARGV

Previously we were calling parse! which has the side effect of deleting
options from ARGV as it recognizes them. To work around this behavior
in previous commits, the desired options needed to be saved before hand.
Simply not mutating ARGV is much easier. Also adds a test.
Merge pull request #246 from justinstoller/feature/master/QENG-514-print_original_command

(QENG-514) Provide the Command Beaker was Ran with in Debug Output