Move some common crafting/construction requirements into a separate struct

The new struct is named requirements and is located in a separate file, construction and recipe inherit from it.

The tool qualities has been moved there, too. The map of known qualities is now stored in a static map inside the quality struct.
Some functions for loading, consistency checking and listing of missing things has been moved into the requirements struct.

This does not yet introduce new feature, but allows constructions to load item qualities.
The member id of quality_requirement has been renamed to type to be consistent with the member of struct component.
As the quality related functions are now part of the quality class, the string "_quality" has been removed from their names as it is redundant.
Move the printing of required tools / components into requirements

Use fold_and_print instead of manually doing this.
Combine special case for the mutation WEB_ROPE and bionic bio_sunglasses for construction and crafting.
Made itype::count_by_charges const, because that's what it should be and it allows to use only a const itype in the requirements.
Move crafting/construction time to requirement class.

Now constructions use the same time scale as crafting, but this is ported to json.
The construction time is converted when loaded from json.
Enhanced the time display to display hours and minutes or seconds (if less than a minute).
Move game::can_make_with_inventory and game::check_enough_materials to requirements class

This allows to use the same logic to check for tools/qualities/components in recipes and in constructions.
This enables tool qualities in constructions.
Harness the power of templates:

Made the three lists of required things in requirements (tools/items/qualities) to equivalent structures (vector of vector of something).
Used template functions to iterate over these lists (with template parameter being that something - tool_comp/item_comp/quality_requirement).

Moved whatever differs into those structures:
- color to be displayed in the the list of requirements - red for not available, gray for other item can be used, green for available, other colors for specials (mutations).
- the name of the something ("welder (40 charges)"/"3 rocks"/"4 tools with sawing quality level 5")
- loading from json (quality uses an json object, tool has simpler format in constructions)
- check for availability (checks mutations, other specials)
- consistency (quality has a different check than item type)
Adding updated RetroDays Tileset

Renames existing RetroDays to more accurate RetroASCII, adds actual
RetroDays Tilesets (10px and 20px versions).
Allow rotation of mall and necropolis
Allow rotation of mall and necropolis...

and added more detail to the mall picture on the overmap.
Ensure MA buffs actually happen

Since the duration gets decremented on the turn you receive the buff, 1
means you never actually get its benefits.
Print list of weapons that work well with martial arts along with describing the martial art.
Cross-check techniques martial art styles claim to have against master list of techniques.
Check that weapons martial arts claim compatibility with exist.
Replace inexplicable inclusion of martialarts.h in item_factory.h with enums.h.
Brawling & tec_counters

Turns out that tec_counter wasn't implemented, so this creates a generic
version based on biojutsu, and four specialized types for various
styles.

Brawling, the "untrained but experienced" style, now gets some techs at
fairly high levels.  Unfortunately, the leg block is no longer available
to No Style, and arm blocking requires at least one point in Unarmed.
Brawling can leg-block at skill 7.  If that seems high, remember: *no
training or doctrine* to teach how to effectively block with your legs.
Toad buff, clean up Brawling

2 armor max didn't seem like much.  Doubled it and modified the rest
accordingly; fixed the Brawling leg block and shortened the description,
too.
Remove undefined martial art technique.
Adds brawling to the debug list

Yeah, it's fairly trivial to obtain via the skill debug, but all means
all.
Replace horrific try/catch when loading recipes with explicit check for array vs single element.
RC car proofreading

Cleans up some strings I missed earlier.
Move realDebugmsg debugmsg to debug.{cpp,h}

Make the blood type function the Creature class pure virtual as they
should be and to avoid the debug message there.

And remove the output to a file, instead add output to DebugLog.