groups: allow erasing depending packages on remove (RhBug:1135861)
py3: fix traceback in fmtColumns() on a non-subscriptable 'columns'.
refactor: split out and clean up the erase command.
goal: renamed undefined name variable
groups: marks reason 'group' for packages that have no record yet (RhBug:1136584)

6584)
locking: store lockfiles with the resource they are locking. (RhBug:1124316)

Otherwise it is not possible to e.g. run DNF twice for different build roots.

This required taking the responsibility of chosing where to put the lock file
away from the lock module (else it would need to learn about the conf
object...).

User still can not lock read access to root-writable MD cache or similar. The
commit merely keeps the old semantics: if it is locked by the same user, do
not let other process lock it again.
py3: add queue.Queue to pycomp.

Another 2/3 namechange.
bash-completion: new completion from scratch (RhBug:1070902)

Features:
  `--enablerepo`:
    completes by disabled repos (`dnf repolist disabled`)
  `--disablerepo`:
    completes by enabled repos (`dnf repolist enabled`)
  `install|update`:
    completes by available pkgs and if local path used (e.g. `./`),
    completes from local files which ends with `.rpm`
  `help`:
    complete only one command. I.e. `help help<TAB><TAB>` will complete
    nothing
  All options/args generates automatically

Used Elad Alfassa <elad@fedoraproject.org> code for completing
`install`, `remove|erase`, `update`, `info` commands.

Reference: https://bugzilla.redhat.com/show_bug.cgi?id=1070902
bash-completion: complete 'clean|groups|repolist' using help

Reported-by: Parag Nemade <pnemade@redhat.com>
Reference: https://github.com/rpm-software-management/dnf/pull/159#issuecomment-55066318