Refactoring the methods on Transaction

1. Removed IRunnable, replacing with System.Action
2. Made Transaction internal
3. Added Unlisten method to the Event class, to co-locate ListenerLock
usage
4. Minor Style Cop fixes