Properly end move operation when duplicating an in-flight component
Add an 'undo inhibit counter' to allow tools to declare an atomic operation. Use this to prevent a duplication registering two undos: one duplicate and one move
Also use undo inhibition to prevent multiple undo points when dragging in EDIT_TOOL