Ref T6027. We currently have two different transaction types:
- TYPE_PROJECT_COLUMNS does most of the work, but has a sort of weird structure and isn't really suitable for API use.
- TYPE_COLUMN is this weird, junk transaction which mostly just creates the other transaction.
Merge them into a single higher-level TYPE_COLUMNS transaction which works properly and has a sensible structure and comprehensive error checking.
Remaining work here:
- I've removed the old rendering logic, but not yet added new logic. I need to migrate the old transaction types and add new rendering logic.
- Although the internal representation is now suitable for use in the API, it isn't properly exposed yet.