Generic Transaction handling in C#. Do a set of things and be able to rollback or commit (all or nothing).