Store mutations for duplicated blocks.
Transacted events

- Add support for transacted events.
- Variable name changes are emitted in a transaction, at end of change.
- Blocks' FieldVariableDropdown behaviour factored out into a mixin.
Copied blocks should emit their field values.
Combine variable creation into a single statement.
Batch block create / dispose events in transaction.
Don't delete machine / variable if no name change!
Fix math_change block.
Factor out colour scheme. Allow RBG colours.