Registry transactions! They work, bitches!

![](http://th09.deviantart.net/fs70/150/f/2010/289/c/d/heck_yes_by_authorgreg-d30ucev.jpg)

The registry is now transaction aware. It will [sea-lion](http://wondermark.com/1k62/) 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.