Move to a more versatile subprocess.popen wrapper.

This wrapper is still mindful of the 64kb limit of subprocess.PIPE and provides handy debug functionality.
It also moves into its own file / class under a new utils directory to reduce the size of ozutil

Various Guest OS classes moved to using that implementation.

Command.run() accepts the command as a python list as a first param, with additional parameters, such as extra ENV items, CWD and a debug function to be used with the track generator. A timeout can be defined for each run, allowing us to be rigid about how long each command runs.

Command.run() returns a Response object with exit (status code), output (stderr and stdout) and command as its properties.

CommandException is the new exception class around it all
Ensure utils get installed as well
Move the scp and ssh functionality to the Command class
Pass in the self.log.debug() function that Guest has into all available Command.run().

This way Command.run(), ssh() and scp() don't really care what kind of debug functions they get and they can stay dump
Only have ssh and scp commnands run the debug info
Move executable_exists under a command test file
remove unused import
Remove redundant returns on guest_execute_command(). None of them were used.
Sync with main implementation