\Flat3\Lodata\Controller\Transaction object is a representation of both the request (
\Flat3\Lodata\Controller\Response) objects, handles piping the request from one path segment to the next, and provides
a variety of helper methods to generate context and get aspects of the request. Transaction also implements the streaming JSON encoder.
$expand system query option, which can itself take system query parameters, creates a new transaction that represents
a sub-request within the main request, with a subclass of the Request object as a NavigationRequest. These can be further nested in
Transactions are also serializable for the purposes of async requests, and can therefore be handled offline, replayed, retried etc.
Transactions handle wrapping requests with database transactions, following OData rules for commit / rollback based on the success or failure of the request.