Transactions refactoring - 2

More transaction refactoring:
- Removes `begin`/`number` methods, as they are not necessary anymore. The transaction manager now is responsible for controlling the number of active transactions, and to how to begin a new one.
- ~~Removes `ClosedTransaction` class. That existed only because, as we had a linked-list before, we needed a base class, when the list was empty, to `begin` the next transaction.~~
- Remove the parent reference on the `Transaction` class. We dont need that anymore, because we use a stack on the transaction manager, which can iterate over the transactions instead.

review @chancancode @tenderlove @rafaelfranca
So, it turns out, that if I want to create a constant `NULL_TRANSACTION = NullTransaction.new` , the `NullTransaction` definition would have to happen before the `TransactionManager`. Ideally  `TransactionManager` should go the the bottom of the file, but I dont wanna do it in this PR, as it would mess all the diff.. as soon as this is merged in, I will do a next PR, to create the CONSTANT + NullTransaction + Move `TransactionManager`