:rocket: Registry transactions! They work, bitches! :rocket:

The registry is now transaction aware. It will sea-lion itself into any
transaction it spots, and roll-back if it's aborted.

The registry *does not* support nested transactions, but it will
detect them and throw an error. It *does* support ambient transactions,
which is what we're using (inner transactions join into the outer ones).

This should make it harder to end up with corrupted states, where the
registry thinks something is installed/uninstalled, but our transaction
has rolled the changes back.

Includes tests like a boss.

Closes #266.