Replace the current tool system's deeply nested StateNode hierarchies with flat tool event handlers to reduce complexity and boilerplate.
## Problem statement The current tool system uses deeply nested `StateNode` hierarchies to model tool behavior. Every tool is a branch state node containing child state nodes (e.g., `SelectTool` has 18 child states, some with their own children like `Crop`). Events propagate down through `handleEvent()` at each level, and child states transition between each other via `parent.transition()`. This architecture adds significant complexity and boilerplate: - Every tool needs a class-per-state, even for trivial states like `Idle` and `Pointing` - State transitions require separate classes with their own `onEnter`/`onExit` lifecycle - The nesting can go multiple levels deep (e.g., `root.select.crop.cropping`) - Simple tools like `HandTool` still need 3 separate child state classes - Writing a new tool requires understanding the full `StateNode` inheritance model ## Proposed solution Replace the nested state chart with a flat tool abstraction based on event handlers with a `before`/`hand