The PR refactors FindPreferencePacksInPackage() and splits program logic from exception handling. It also handles std::exception to give more
information about a possible failure
Preference Packs are collections of preferences that can be applied en
mass to the user's current setup. Any preference that can be stored in
user.cfg can be stored in a preference pack, and they are designed to be
easy to distribute.
Support is also added for saving a subset of current preferences into a
new preference pack in order to facilitate easy creation of new
"themes", etc.