Make configurable libvirt memory work again.

We expected to get a value in megabytes from the
configuration file.  Libvirt expects a value in kilobytes.
Therefore, we were taking the value from the configuration
and multiplying by 1024.  However, I forgot that
config_get_key() returns strings, not integers.  Multiplying
a string by a number gives you that many copies of the
string, which is not what we want.  Instead, cast to
an integer before multiplying.

Signed-off-by: Chris Lalancette <clalancette@gmail.com>
Handle broken symlinks on ISOs

Signed-off-by: Chris Lalancette <clalancette@gmail.com>
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.