Specifically this:
-Ensures key/mouse up event propagation works across multiple viewports
-Ensures that mouse up events for manipulators only get delivered if there's a corresponding mouse down event
-Also tidies up the "are we done processing events this tick?" logic in ViewportManipulatorController