MBS-5765: Correctly render a duration in seconds as hours, minutes, seconds

Time::Duration->normalize normalizes a large duration into years, months, and
days - rather than just the needed hours, minutes, seconds. Rather than manually
re-fudging the calculation to account for that overflow, I've just implemented
partioning of seconds in hours, minutes and seconds manually.
MBS-5765: Use the same implementation of FormatTrackLength (Perl) in formatTrackLength (JS)
Fix format_track_length test to correctly check for hours, not days
Use int(x + 0.5) rather than round()

I incorrectly assumed round was present in standard Perl functions, so instead
this now uses the idiom of int(x + 0.5). This works correctly for positive
numbers, but not for negative numbers - however track durations are inherently
positive so this assumption holds.