Cleanup Transaction inheritance.

Transaction class doesnt need to encapsulate the transaction state using
inheritance.
This removes all Transaction subclasses, and let the Transaction object
controls different actions based on its own state. Basically the only
actions would behave differently are `being`,`commit`,`rollback` as they
could act in a savepoint or in a real transaction.

[related to https://github.com/rails/rails/pull/16341#issuecomment-50791622]

review @chancancode @tenderlove @rafaelfranca @jeremy

Using an implementation side effect—presence of `savepoint_name`—to answer a different question, how far the record should roll back.