Change TracksInfo::tracks to return an iterator
Using an iterator instead of a static slice allows for more flexible implementations of `TracksInfo` that can use the chain storage without compromising a lot on the performance/memory penalty if we were to return an owned `Vec` instead. NOTE: This feature will benefit from the soon to be released return_position_impl_trait_in_trait(https://github.com/rust-lang/rust/pull/115822) to not require the `TracksIter` associated type and from a bugfix in the compiler(https://github.com/rust-lang/rust/issues/116662) to declare the DEFAULT_MAX_TRACK_NAME_LEN generic constant in the `TracksInfo` trait.