tests: rename: test_transaction.py -> test_transactiondata.py
transactions: do not use TransactionData to store the packaging requests.

That is precisely what hawkey.Goal is for.

Also see hawkey commit 8788f25.
transaction: foundations of dnf.Transaction and a test.
add dnf.util.group_by_filter()

Useful when one wants to split items of a sequence into two groups depending on
the result of taking each item through a filtering function.
transaction: use dnf.transaction instead of dnf.yum.transactioninfo in buildTransaction().
transaction: rewrite Base.populate_ts() to use dnf.transaction.
transaction: migrate YumOutput.list_transaction() to dnf.transaction.
transaction: migrate YumBaseCli.doTransaction() to dnf.transaction.
tests: adapt unit tests to dnf.transaction scheme of things.
transaction: bring rpmtrans.py into a shape where transactions can be tested.
populate_ts: handle obsoleting installs.

Promoting obsoleting installs to upgrades seems to be what Yum
does. Alternative is going through the install's obsoletes and populating
RPM ts with them as erases.
remove: dnf/cli/callback.py, dnf/yum/callbacks.py.
transactions: reenable transaction verification.
rename: verifyTransaction() -> verify_transaction()
rename: verify_pkg() -> verify_tsi_package().

so it can not be confused with Base.verifyPkg().
refactor: Base.populate_ts() is now Transaction.populate_rpm_ts().

More logical that way, plus a UT included.
transaction: make history work again.