Currently, if a transaction requires accepting a license, it just fails.
This implements a basic dialog (which makes it easier to read the
license than displaying it inline) and the necessary backend
functionality.
It was necessary to move the list of packages out of a QObject property
into a new member to allow restarting the transaction outside of the
onFinished slot.