The Timeline's timecode and the Program and Source monitors' current-time
timecodes were display-only. They now share one widget,
widgets::timecode_field, which replaces the unused timecode_label:
- Dragging scrubs that panel's playhead, 1 frame per point (Shift x10), and
stops at the start (for the Source monitor, the clip's start). The pointer
is hidden while dragging and put back where it was pressed.
- A click opens a text field with the whole value selected. Enter or clicking
away goes to the typed time through parse_timecode, so `1000` and `+15`
work. Escape cancels. An invalid time is reported in the status bar.
Left/Right on the selected value start from its last digit.
The Timeline and Program monitor use playhead.set, the Source monitor
source.setPlayhead.
Tests: timecode_ui (5 tests). The ui-egui suite passes except the two
Windows CRLF failures fixed in #488.