Add item::type_name to get the name without prefixes

Similar to item::nname, it returns the item type name without item specific properties (damage, ...).
But it can return special names for blood and corpse items and for items that have a unique name.
It uses the already loaded item type pointer of the item instance.
Add item::make_handed to setup a handed item

This replaces the duplicated code in map.cpp and item::item.

Use the existing enumeration handedness (from bodypart.h), which is also used in the constructor of items.

Remove itype::is_sided as not needed (used at one place only, converts to it_armor when it's already an it_armor).
Remove direct usage of it_artifact in player.cpp

Add callbacks in the item class that are called when the artifact messages should be displayed.
The callbacks do what was previously done in player.cpp, but the item class knows about the artifact class anyway.
Remove direct usage of itype in various files

Only where possible, because some code still refers to specific itype types.

Use the equally good functions of the item class instead:
item::volume(),
item::weight(),
item::is_*()
item::is_weap() contains basically the same check as previously written.
item::has_quality instead of manually querying it.
...

Remove direct usage of artifact in mondeath.cpp, map::spawn_artifact does the same as the previous code.
Coverage bitsets depend on num_bp instead of a hardcoded number.

This actually decreases the bitset to 12 bits because num_bp is 12, and
there are only 12 (real) body parts. The 13th part is num_bp which
should not appear in the bitset anyway.

The json read/write functions for bitsets are templated, but as they are still defined inside json.cpp, they have to be instantiated there to be usable in other compilation units.
Implement wearable non-armor items

item::is_armor will now also check for the presence of a "IS_ARMOR" flag, and if so consider the item armor.

The flag is used in a shoulder strap item, which is a gun mod. Attached to a rifle it makes the rifle a wearable item as is_armor will now return true for that modified rifle.

Note: it's now possible to directly wield a worn item without taking it of first. This is required to effectively use shoulder straps.

Note: it still needs additional data for encumbrance etc.