Tool contribution model

A tool session owns runtime state and bindings. WorkbenchToolContribution exposes primary views, local actions, and status. WorkbenchToolFactory composes shipped contributions. ToolViewSelector changes the visible layout only.

This keeps Render Toy and ShaderToy alive simultaneously and leaves the workspace as the document/focus/time owner.

Implementation

Relevant source: ui/WorkbenchToolFactory.*, ui/ToolViewSelector.*, and modes/*/*Session.*.