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 - note that any potential deadlocks can only be triggered if you actually use the transaction API, if you don't the server does not touch your transactions.
 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, is a nice step forward for discussing what we want the API to look like, and does in fact contain an initial well tested implementation of this thing.