BookScanner recomputed media.duration by summing all audio files, so a
rescan that detected any file change would re-count a previously disabled
(excluded) track and re-inflate the duration. Use the same
Book.updateDuration() (included tracks only) so both the manage-tracks
path and rescans stay consistent. Add a Book model unit test for
updateDuration().
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>