change with-savepoint to have same invocation as with-transaction, including making the name optional
wrap commit and abort hooks in unwind-protect