Owns a TransactionSaveStateManager for the life of the workbook and closes it on
change/unmount. The "saved baseline" is whatever the commitSource reports as durably committed;
without one, dirtiness is measured relative to the workbook's initial commit.
Tracks a workbook's dirty (unsaved-changes) state as React state.