Clean up imports and various other smaller items

- Import OzException directly instead of referencing the full package name
- Import various os.path and oz.ozutil functions to more readable and shorter lines
- Replace multiple write() calls with a single multi line write() call
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