New --add-install flag for CLI

This flag lets you add arbitrary things to the upgrade transaction.

The string that you pass just gets handed to yum, as if you were doing
'yum install PATTERN'. So you can use globs, groups, or whatever other
crazy junk you like.

If the requested item doesn't exist, a warning will be printed, but
these warnings are not considered fatal.
Move cache to /var/cache (CVE-2013-6494)

This isn't temporary data, so don't create it in /var/tmp.

This also avoids a potential security problem with an attacker creating
the cachedir before us, and putting Bad Things in it.

This fixes #44 on github and rhbz#1066679.
Add --product=XXX flag for upgrades to F21+

Since Fedora 21 has various Products - where F20 and earlier didn't -
the user might want to choose which product-environment to apply to
their system during this upgrade.

The '--product=PRODUCT' flag is really just a shortcut to install the proper
group(s); the assumption is that for any valid $PRODUCT, there will be a
corresponding group named "$PRODUCT-product-environment".
Require --product for Fedora upgrades to F21

From Fedora 21 onward, there are multiple "products", and every Fedora
system needs a product. So this implements the checks to require that you
use '--product' if you're upgrading to Fedora 21.

I don't love version+distro specific code, but apparently there's just
No Other Way To Solve This Problem, so there it is.

The error message text comes from this mailing list thread:
https://lists.fedoraproject.org/pipermail/devel/2014-October/203003.html
sysprep: filter host plymouthd.conf from initrd

We don't want to overwrite the upgrade.img plymouthd.conf - that's what
makes us use the special upgrade theme. At least, right now it does.

Also, if this gets more complicated in the future, I'll probably need a
file glob blacklist rather than individual filters...
Fix logging during upgrade

When we switch back to initrd for the upgrade, we should keep logging to
the system's on-disk journal. So make the initrd's /var/log a symlink to
the disk's /var/log and we should be good.
Extend the --product warning message

Make sure that users know that Workstation is GNOME and that the
$PRODUCT choices may install new packages.
Rename fedora-release-standard to fedora-release-nonproduct

It was properly obsoleted in Fedora, so either will work, but we
may as well use the correct current name here.
Merge pull request #52 from sgallagher/master

Extend the --product warning message
update Makefile and fedup.spec for 0.9.0 release

Update the official RELEASE TAG in Makefile, and include spec changes
from fedora for easier merging.
fedup --clean should exit parse_args() early

`fedup --clean` is basically a different mode than normal fedup, so we
need to skip the rest of the argument parsing if we're doing cleanup.

Resolves: rhbz#1158766
Make systemd consider startup finished before switch-root

A few pre-release versions of systemd (systemd-216-[2-7] in Fedora) have
a StartTimeoutAction option, which (by default) powers the system off
if startup hasn't finished after 15 minutes.

Which means: if systemd doesn't think we've completed startup, it's
going to forcibly power the system off 15 minutes into the upgrade.

This is not good behavior. We should definitely avoid this.

So: systemd considers startup "finished" once its initial job queue is
empty.  (This is when it prints that "Startup finished in [time]"
message.)

If we make upgrade-prep.service an 'idle'-type unit, it waits until the
job queue is otherwise empty before it runs. Which means that systemd
will consider the system to be started once everything but
upgrade-prep.service has finished, and then it will run upgrade-prep,
which then performs the switch-root to start the upgrade.

Resolves: rhbz#1159292
Fix traceback when --product/--add-install not found

Obviously, if we get an exception here then 'tx' isn't going to be set.
So make sure we only refer to it in the 'else' block of the try/except.
better errors for invalid '--network' values

Add a specific error message for weird systems that have busted
/etc/*-release, tweak the downgrade error message, and fix the TypeError
from the format mismatch.