Main MVU model update function.
Wraps the dispatch so that a library sheet opened for viewing is held at the state it loaded
with - see ModelHelpers.pinDrawBlock. It has to be done here rather than inside Sheet.update:
the three draw block update functions nest, so gating there would catch every message, but a
handful of places edit model.Sheet directly with Optic.map and reach none of them - the
separate/reroute wires actions in Renderer.fs, KeyBindings.fs and TopMenuView.fs, two context
menu items in UpdateHelpers.fs, the simulator's "save input values as default", and the
memory refresh that runs on every message. All of those pass through here.