[CR] add categories to item types

Add categories to the item types (referring to #1641 and #3499).
The categories are loaded from json, they are optional and are automatically calculated with the existing rules. They are used in advanced inventory and in inventory_ui.cpp.

Sorting is done with a vector of category names, that determines the sorting of these categories. Categories not in this vector are sorted alphabetically (with string::operator<).
This vector is initially filled with the default categories and in their current order.
Category names are also read from json objects with type "ITEM_CATEGORY", entries that are already in the vector are removed, the newly read category is added at the end of the vector.

I added categories to some items as example and proof of concept.