Make sure tracebacks are always displayed correct

If an exception that we don't know how to handle gets thrown, make sure
the traceback is always printed in the command line. If the output of
the program is also saved in a log file, then make sure the traceback
gets printed there too.
Handle guestfs.launch() thrown RuntimeErrors

If launching the guestfs helper VM fails, the library will throw a
RuntimeError exception. Don't treat this as an unhandled exception.
Convert it to FatalError but preserve the error message.
Make sure wrapped text fits in the dialog boxes

When we wrap text to create a paragraph and print it in a dialog box,
make sure the lines will not get wrapped further by the dialog box.
Canonicalize distro & osfamily params in os_cls()

If the distro name as returned by libguestfs's inspect_get_distro was
redhat-based, since hyphens are not allowed in module names, importing
module redhat-based would create an ImportError exception, even if file
redhat-based.py was present. Although we don't have any redhat-based.py
module and the code will still correctly fall back to importing
linux.py this can be considered as a bug. In order to overcome this, we
replace the hyphens with underscores in the distro and osfamily names.
In the future, if we have to create a module for redhat-based distros we
will name it redhat_based.py.
Correctly identify Oracle Linux OSes

libguestfs prior to 1.27.9 will identify Oracle Linux as Red Hat
Enterprise Linux. Check for the presence of /etc/oracle-linux to
determine if the OS is Oracle Linux.