fedup.py: error message when there's no updates

It's possible that you'll end up with no available repos (except your
custom instrepo, which has no packages), and then you'd get the message:

  Your system is already upgraded!

and we'll exit with returncode 0 (i.e. success). Which this isn't.

Head that condition off a little early and print an appropriate message
and return failure instead.
py2.6: add CompatNullHandler

py2.6 logging doesn't have NullHandler, so add a compatible
implementation.
TODO update

This has some of the stuff we need for compat with older distros.
systemd/Makefile: fix install without systemd

If the system doesn't have systemd, just don't install the units.
fedup.util: improved subprocess commands

This adds a new function, call_output, which runs the given program and
returns a tuple: (retcode, stdout, stderr). It has a few advantages:

- CalledProcessError will always have retcode and output attributes.
- The command being run will always be logged.
- STDOUT and STDERR are always captured (won't leak onto screen)

It also implements the other subprocess commands (call, check_call,
check_output) using call_output:

call:         return retcode
check_call:   return retcode, raise CalledProcessError if retcode != 0
check_output: return stdout, raise CalledProcessError if retcode != 0

This is especially useful with python 2.6, which doesn't have
check_call().
Use new subprocess commands from fedup.util

Move all the subprocess calls over to using our variants in fedup.util.
Make failed doc build non-fatal

We still want to be able to build/install if a2x isn't available.
fedup.commandline: treat --network VERSION as a float, not int

In our distant past and possible future, distro version numbers are
floating point numbers. We should handle that case.

(See commit 053c9859d62106b3bbbd45eeb65159d8753f4089, which was dropped
when merging with master)
fedup.spec: add version-specific Requires:

- systemd is only a requirement on Fedora 17 and later
- RHEL6 needs python-argparse for fedup to run
fedup.treeinfo: py2.6 compat

Python 2.6's RawConfigParser doesn't have the allow_no_value kwarg.

If we get a ValueError from __init__, just drop the arg; the old
RawConfigParser seems to quietly accept keys without values so this
should be OK.