util: add decomp_cmd()

This function takes a filename, and returns the appropriate "decompress
this file to stdout" command for the compression type.

If the file is uncompressed (or compressed with something we don't
recognize) it returns "cat $FILE".
util: add TemporaryDirectory()

Here's a useful context-manager class for doing stuff inside a temporary
directory. Fun!
fedup.boot: add Initramfs class and helpers

This adds an Initramfs class that's basically a helper for manipulating
initramfs images.

It also adds find_initramfs(), which finds the initramfs that
corresponds to the given kernel version (either according to
http://freedesktop.org/wiki/Specifications/BootLoaderSpec or the
traditional /boot/initramfs-$KERNEL_VER.img path).

Finally we also add a little helper function, current_initramfs(), which
returns the path to the initramfs for the running kernel.
sysprep: pull config files from host initrd into upgrade.img (#1038413)

There's a whole class of bugs where upgrade.img doesn't set up the
system quite the way the normal initrd does, because it doesn't have the
config files from the host system.

For example: some mdraid arrays won't show up in the expected place
unless you have the host's mdadm.conf (see bug #895805).

The existing code (see commit f937c4a) dealt with this problem by
checking for mdadm.conf, and adding it to the initramfs if it's not
empty.

This approach doesn't scale, though: to add these checks for *every*
file that dracut puts into the initrd would mean writing a *lot* of
code just to get a buggy approximation of dracut's behavior.
Plus it just doesn't make sense to maintain that logic inside fedup.

Instead, here is a simpler (and more robust) approach: just copy the
config files from the existing initrd into upgrade.img. Easy!

So that's what this patch does. It works like this:

1. list the contents of the current initramfs
2. identify config files
3. extract them to a temporary directory
4. append them to upgrade.img

Identifying config files is the tricky part. Right now we grab
*everything* in /etc (except /etc/*-release), thus overwriting any
existing files with the host's version.

It also turns out that we need /usr/share/zoneinfo because, hey, now we
probably have /etc/localtime, so we're gonna set the timezone, so we
need that timezone data.

This will probably need to be refined over time, but it's a damn sight
better than what we had.
remove unused initramfs_append_* and need_mdadmconf()

This code is now unused, so remove it. Whee!
Update spec changelog for 0.8.1

I'm retroactively tagging a previous commit (e2a223e) as 0.8.1; this is
the changelog for that release.
Bump version to 0.9.0

Gotta bump the version to differentiate the git version from the
soon-to-be-released 0.8.1. And the new handling of config files for
upgrade.img is sufficiently different that I think this deserves 0.9.0.
improve "make archive" and add "make snapshot"

"make archive" makes an archive for the version specified in $(RELEASE_TAG).

"make snapshot" makes an archive for HEAD, using $(VERSION) and adding
some stuff to make it clear that this is a pre-release tarball.