Implement transaction logic for DeeModels in DeeTransaction
This branch implements a new class, DeeTransaction, that implements transaction isolation on top of any old DeeModel implementation. It has only one interesting API call so far,namely commit() which does as labeled.
How/if exactly we want to expose a transactional API on DeeModel itself is still up in the air; but this work should provide a solid foundation for that. (and all of the trickier code needed, anything else will be mostly just gloss).
Since this is a rather complicated afair I recomment that we take a somewhat functional approach to the review. Validate the testing harness - and possibly submit a few new test cases to cover the stuff I didn't think of.. Fixes: https://bugs.launchpad.net/bugs/894023. Appoved by Michal Hruby.