Make the functions for committing and aborting transactions (and savepoints) generic functions.
Added *transaction-class* and *savepoint-class* to allow user code to  select which classes are used for transactions and savepoints.
Added the special variable *current-savepoint* and *current-transaction*; these are bound by call-with-savepoint and call-with-transaction respectively.