[BT] Refactored TorrentFilesModel to avoid dynamic casts.

Use a struct with statically defined fields instead of Util::TreeItem.
[BT] Fixed include order.
[BT] Properly calculate progress for empty files, fixes #1728.