fedup.media: add iscd()

It turns out to be a lot harder than you'd think to tell if a device is
a CD or not!
fedup-gtk: fix traceback if mirror response is None

The response data might be None, so check that first
fedup-gtk: don't crash if there's no active item in the combobox

w.get_active() could be -1 - check that first
fedup-gtk: better srclist combobox handling

- Actually detect if something is a CD/DVD
- Don't empty out the srclist (it makes the combobox change shape, which
  is kind of ugly)
fedup-gtk: make Ctrl-C work

Apparently this is a bug with Gtk.main() - see
https://bugzilla.gnome.org/show_bug.cgi?id=622084

The workaround suggested there is to reset SIGINT, so here we are.
Write debugging info to /var/log/fedup.log by default

It's pretty damn helpful to have this data and it really doesn't slow
down the process perceptibly or take enormous amounts of disk, so write
the log by default.
Check for already-upgraded system (#895967)

If there's nothing to update, let the user know, and exit.
update TODO
refactor cleanup logic into its own function

Add the do_cleanup() function. We'll probably move this elsewhere at
some point so it can be shared between frontends.
Put SELinux in permissive mode during upgrade (#896010)

There are some places where the old SELinux policy and the new SELinux
policy don't match. So there's some stuff that the new policy will deny
that the old policy allowed.

Like maybe something in your system startup used to write to /tmp, but
in the new system it writes a tempfile to a private directory.

So: when we switch-root to the old system to start it up, part of the
startup might get denied, and the system might not start up properly,
and the upgrade might not start.

If we had a way to make SELinux use the old policy in the old system and
new policy in the new system, that would probably be a better fix, but
for now...
Improve is_selinux_enabled() (#896721)

Some systems might not have libselinux-utils installed, so use
libselinux directly - or assume "False" if libselinux is missing.
fedup.media: add isiso()

This function will tell us if the given file is an ISO9660 filesystem.
Handy for validating the input to --iso.
fedup.media: make check_call capture mount output

Make our own check_call function which captures mount output, so it
doesn't go to stderr and it's in e.output if there's an exception.

This also imports CalledProcessError, which was missing before.
fedup: handle bad arguments to --iso better (#896440)

If the argument to --iso is bad, we should catch that before we try to
actually mount the thing.
fedup: do ISO/device setup after root check (#895665)

We need to be root before we can do loopmounts to set up the ISO image.

Break the device setup stuff into a new device_setup() function, and
call it after the root check.

Also, handle mount failure more cleanly.
fedup: Better error messages for invalid --device/--iso

'The 'fedupiso' repo was rejected by yum as invalid" doesn't really tell
you what you need to know: "Live images aren't Install images, dude".

Make the messages a little more clear for the --iso and --device cases.
Add Treeinfo.read_str()

For reading a config from a string, naturally.
More GUI prototyping from FUDCon

Ignore the contents of the problemstore in fedup.glade, I may have been
drinking while I wrote that...
Make fedup require grubby for new-kernel-pkg (#896194)

You shouldn't be able to have a system without grubby, but just to be
sure, let's make the package require it so we can ensure that
new-kernel-pkg is present.