remove: dead code for deplist, version and check-rpmdb commands.

Even if there is an RFE for them in the future, the code would have to change
a lot by now.
Add dnf.cli.demand.DemandSheet.

This is the core of what I previously called 'signup mechanism'.

Note that the tests are starting to be structured into subdirectories with
this commit.
Command.configure() takes the command arguments like run().

This is to give commands a chance to properly register their demands depending
on the command line.

Related: RhBug:1080331
Integrate DemandSheet into CLI.

Built-in commands can keep on using their class attributes as a
convenience for now or define configure(). Only the cli.demand approach is
an API though. It is more flexible, allowing commands to demand features
dynamically based on command line argumens. Also, DemandSheet does
checking that once demanded feature is not disabled again.
api: add Cli.demands and Command.config() to the API (RhBug:1062884)

Document properly. This opens up the road to several API extensions we've been
asked for.
api: add Cli.demands.root_user (RhBug:1062889)
fix: PendingDeprecationWarning from RPM in gpgKeyCheck().

Related commit: dca8a70.
cleanups in cli.OptionParser.

Also reenabled the help strings for some options.

Related commit: 067d5f5.
tests: fix locale independence.
tests: remove: support.MockCli.

It's better to use the real class when its the subject of testing and then
MockCli is not used anywehre else, unlike _BaseStubMixin.mock_cli().
remove: instance attrs of Base, namely cacheonly.

Added by 33a26a6 this complicates things elsewhere and we can do without it in
Base (which should be as CLI-agnostic as possible).
Start new version: 0.5.0.
fix: TypeError in dnf history info <id> (RHBug: #1082230)
doc: 'clean packages' incorrectly mentions we do not delete cached packages. (RhBug:1083767)
move: dnf.cli.cli.OptionParser -> dnf.cli.option_parser.OptionParser.

dnf.cli.cli is big enough even without OptionParser.
option_parser: remove base dependency.
refactor: OptionParser._checkAbsInstallRoot is static.
api: Base.resolve() takes allow_erasing. (RhBug:1073859)

In CLI, this is set directly from demands.allow_erasing (renamed from
uninstalling_allowed).
doc: typo in group doc. (RhBug:1084139)
demands: commands requiring resolving dymamically need to set the demand now.