YouTubeEngine passed track duration in seconds while
SpotubeAudioSourceMatchObject.fromJson interprets `duration` as
microseconds, so durations collapsed to ~0 and the queue displayed 0:00.
- lib/services/metadata/metadata.dart: send duration in microseconds
(search() and getVideo() callbacks)
- lib/components/track_tile/track_tile.dart,
lib/modules/player/player_queue.dart: add resolveMissingDuration so
the queue actively resolves the sourced track's real duration when
the track's own metadata duration is effectively zero
Fixes#3021