Made Skill pointers everywhere const - they're not meant to be mutable
Overhaul of code involving requirements, recipes, and skills.
Includes:
 * A massive amount of const-correctness fixes, particularly to code involving the Skill class.
 * Removing differentiation between primary and secondary skill requirements
 * Moving skill requirements to src/requirements.cpp, paving way to using them for vehicles and construction
 * Modified recipe success formulas, reasonably similar to the previous ones, save for the 100% broken chance-to-learn recipe
 * Changing skill requirements internally to a more easily extensible format
 * [WIP] Ability to load said requirements from a different JSON structure, that can be more easily included in different entity types in the future. So far this is heavily WIP
 * Adding to above two points: Backwards-compatibility is kept, no data file changes included
 * [WIP] Crafting UI changes. WIP part includes showing a confidence/difficulty rating instead of a raw %
 * Minor fix for two typos in recipe_food.json
Implemented missing requirements functions, added doxygen comments
Fixed a stray untranslated string
Use for-in syntax for iterating book recipes
Fixed critical failure and learn probabilities
Removed the count of quality requirements. It's just a dummy for some template magic
Removed the dummy quality count from JSON files
Added a  paramter to requirement listing functions
Renamed cap parameter of player::practice to task_difficulty
Removed the book-specific recipe level from code, as it was unused already anyway
Fixed trailing colon problems
Fixed spacing between elements in requirement_data::make_list
Updated crafting menu search string
Unlearnable recipe coloring changes
Groundwork for splitting requirements into separately loadable objects and new JSON layout
Fixed a rebase problem that git didn't catch