@deeky666 I'm trying to get a grasp of the concepts in your PR, can you tell me a bit more about the purposes of the `TransactionDefinition` concepts:

- naming a transaction: what is the purpose of this?
- marking a transaction as read-only: did you plan to enforce `SELECT` only on the `Connection`, or is this a lower-level database concept?
- transaction propagation: what is this for? There is no list of possible values in your PR; if you have a pointer to some reading about this, I'll be happy to read it!