Bump version to 0.7.3-0, fill in RPM changelog

Getting ready for a 0.7.3 bugfix release.
Add fedup.util.kernelver()

This function will parse the version number out of a vmlinuz kernel
image.

..I actually can't remember why I needed this right now, but I'm sure
I'll be pretty happy about it when I remember why I needed to write it.
Move argument parsting to fedup.commandline

This lets us share the commandline parsing between the GUI frontend (or
perhaps frontends) and the CLI. Whee!
Use fedup.commandline to parse commandline args

Yep, we parse some commandline args now, so people can use --instrepo
and junk if they feel like it. Not that it's wired up or anything.
Update TODO

Having talked to a resident mdraid expert, it turns out that migrating
device names isn't gonna be enough to fix /dev/mdX problems. So drop
that idea.

Plus, other updates. WHAT FUN.
add fedup.boot.initramfs_append()

We'll need this for adding things like mdadm.conf to the upgrade.img.
fedup.media: log stderr if umount fails

We have the stderr output in e.output, so log that if umount fails.
Fix hang on systems with old F17 systemd (#910326)

In the future we may need to check package versions inside fedup, since
running fedup off the DVD isn't the same as *installing* it and running
it.

But since we don't do that yet, we don't need to worry about it yet.
move cachedir to __init__.py

We might want to use this in other parts of fedup, so...
refactor: split system prep stuff into fedup.sysprep

fedup.download was kind of crammed with stuff. This makes it only hold
the yum-based bits, which is nicer.
Add mdadm.conf to initrd if needed (#895805)

Check to see if the system needs mdadm.conf to boot, and if so, add it
to the initramfs.
support initrd updates in /etc/fedup/update.img.d

There are certain bugs that require fixes in upgrade.img. Unfortunately,
upgrade.img gets burned onto DVDs and things like that, so we can't
exactly just push out an update and call it done.

This adds support for updates to upgrade.img. You put the image into
/etc/fedup/update.img.d and it will get concatenated onto the initramfs,
thus overwriting (some of) the original contents.

The images should should be built the same way as the normal initramfs
image - i.e. using 'cpio -c' - and either uncompressed or compressed with
'xz --check=crc32'.

(gzip might work but there have been problems in the past with
concatenated xz and gzip images - uncompressed is probably safest.)
upgrade-prep.sh: unmount any mount with .unmount-please

I mean, it's being so polite and all..

..Also, this is a file that fedup-dracut will create for bind-mounts
that should be unmounted before starting the upgrade, since there can be
more than one now (e.g. plymouth module dir).
Make upgrade-prep.service output go to console

This should help clear up confusion about whether or not the upgrade has
(attempted to) start or not..
fedup.sysprep: make /lib/modules/$(uname -r) before reboot

I REMEMBERED WHAT KERNELVER WAS FOR!! :D (see commit a2befeaa)

Creating this directory before rebooting will mean that we don't have to
play silly games trying to remount / read-write and junk to create it
during initramfs. Sometimes that causes weird problems, so it's better
to avoid it if possible.
fedup.download: simplify urlgrabber error handling

It turns out urlgrabber does keep track of the mirror errors for us, so
we can use that instead of keeping track ourselves.
WHAT THE SHITTING FUCK, URLGRABBER ヽ(`Д´)ﾉ  (╯°□°）╯︵┻━┻

urlgrabber does some amazingly fucked-up stuff with exception handling!
When there's an IOError while writing to disk, F17 urlgrabber raises..
KeyboardError.

Yep.

This means there's no way to tell if we're out of disk space or the
user hit Ctrl-C, which explains why it exits silently if you run out of
disk space. (See https://bugzilla.redhat.com/show_bug.cgi?id=896144)

So. If we're using F17 urlgrabber and we get a KeyboardError while doing
something in urlgrabber, we add an extra little message about what
*might* have happened, so the user has some clue what's up.

Luckily the behavior has changed to something more reasonable in F18, so
we only have to do this in F17. Unfortunately, the version number hasn't
changed since F12, so there's no good way to tell what version of
urlgrabber we're dealing with. Awesome.
cache initrd so we don't have to refetch if it's modified

If we append stuff to the initrd (e.g. because we're applying updates or
inserting mdadm.conf - see sysprep.prep_boot()), its checksum will
change, and if you re-run fedup we'll think it's corrupt or something
and download it all over again.

So to save us a little bandwidth and time, save the original to the
cachedir, then copy it to initrdpath (where we can modify it freely).

This will make us use an extra ~25MB in cachedir, but that's like a 2%
increase. And disk is less precious than bandwidth or time.
Fix OSError on missing /etc/fedup/update.img.d

1) listdir returns generator, so you can't test to see if it's empty
2) os.listdir raises OSError, so catch that
fedup.util: add df() and hrsize()

Add a couple utility functions that we'll want if, say, the disk is
full and we need to tell the user about it.