Introduces the concept of a transaction, which is a collection of
updates to a table to be sent to the catalog together. Updates and their
corresponding requirements are generated via a new `action` abstraction,
which are constructed and run in the context of a single transaction.
The actions update in-memory table_metadata owned by the transaction,
but the actual update to the table is only committed when the
transaction's updates are sent to a catalog (not included in this
commit).
To demonstrate, one such action is included in this commit, for schema
updates.
Backports Required
[x] none - not a bug fix
[ ] none - this is a backport
[ ] none - issue does not exist in previous branches
[ ] none - papercut/not impactful enough to backport
Backports Required
Release Notes
none
ducktape was retried in https://buildkite.com/redpanda/redpanda/builds/55261#01923085-9f59-4dba-887c-d5100e6a10b0
ducktape was retried in https://buildkite.com/redpanda/redpanda/builds/55261#01923085-9f60-413c-9c3f-f82085082db2