fix several issues related to leaking memory

 * remove duplicate decrement on the transaction_pointer during rollback
 * remove unnecessary code to handle decrementing the transaction_pointer prior to rollback which caused transactions following the first rollback to fail to decrement the transaction_pointer
 * change cleanup() unset the collection instead of reinitializing it to an empty array, so we don't keep numerous empty arrays in memory if the transaction pointer gets off
 * add test assertions to ensure that the transaction pointer is always returned to zero and the transaction-specific in-memory objects have been cleared at the end of each test