refactor(desktop): replace focusPanelAtom with native browser focus APIs
- Add useFocusWithin hook using focusin/focusout events
- Remove focusPanelAtom from atoms.ts
- Update useDiffPanelKeyboard to use hasFocus prop and call .focus() for panel switching
- Update useRevisionGraphNavigation to use hasFocus prop and call .focus() for panel switching
- Update FileList to accept hasFocus prop instead of reading from atom
- Update RevisionRow to remove manual setFocusPanel calls
- Update DiffPanel and RevisionGraph to use useFocusWithin with tabIndex={-1}
- Update AppShell to create and pass panel refs for cross-panel focus transfer
This simplifies focus management by relying on native browser focus instead of manual state tracking.