Initial implementation of transaction support for REST API

Added internal support for running transactions via the REST API.
 o Provides a proposal for a user-level API, undocumented
 o Provides the internal implementation for running transactions across multiple REST operations

Missing:
 o Probably a lot of scary edge cases, particularly around deadlocks
 o Session timeouts or other means of killing of transactions running for dead clients

Assuming this is ok in peer review, I think we should merge this - it does not introduce any new user-visible behavior, and is a nice step forward for discussing what we want the API to look like.