WIP: Work on a new, more convenient transaction API

This still needs to be completed and needs more exercising and
documentation added to be useful.