This is the first of many commits to improve code quality, and try to
tame my bad looking code.
Types such as Slot and Race are now living under types/ and have
dedicated functions to go between ids and enumerations without a heavy
std::map.
A new repository API lives in a new SqPack header, which replaces the
old crusty way of fetching repository information in GameData.
Building equipment paths now live in libxiv (moved from novus) provided
you have a model id. Standard methods to build index and dat filenames
are provided in their functions now too.
Added functions to extract Havok pak files, and extract some skeleton
data from an externally processed Havok XML file. This still requires
you to use the proprietary Havok SDK though, but I'll think of a
solution in the future.
Now you can easily parse EXL files, and this commit includes changes
to GameData to easily extract a EXH from just an excel sheet name
like "Item" or "Map". However this still doesn't work for language
seperated excel sheets yet.