Removed copying of the itype

Using a pointer to the ammo type is completely fine here.
Rename container member of it_ammo and it_comest to default_container.

Fix a bug in the consistency checking in item_factory: check tool != null and tool exists.

Add checking for it_ammo container being valid.
Prevent removal of shoulder strap from worn gun.

Also remove an outdated debug message. It does not matter whether the item is armor, the item functions used there will work fine for non-armor.
Replace access to item type with access to item itself.
Move the artifact deserialize constructors into the source file.
Prepare the item constructor for items of multiple types:

Instead of assuming that is_* of the item type will only be true for exactly one function (either tool or gun or gunmod or ...) it checks all types.
This allows proper initialization for all types in one item.

Also do the same thing in item::info.

Remove redundant writing of charges=-1, this is already done by item::init.
And the check should be directly for count_by_charges, because that what's important here: starting with item::charges > 0 instead of the default -1.
Combine code for food item info:

food in a container and food outside of it uses the same code now.
Avoid direct usage of it_container::contains

Use item::get_remaining_capacity_for_liquid instead.
Implemented the item slot for container items:

This slot stores container content size (not item size).
Implemented the item slot for armor items:
Add armor slot to some bows to make them wearable.
Add armor slot data to wearable containers.

Removes the IS_ARMOR tag because the presence of the armor slot data makes the item armor.
Fixes sharp terrain tetanus check.

The chance to get tetanus wasn't respecting if you actually got damaged
or not on SHARP terrain, so it was always checking it.
Add documentation for armor_data and container_data.
Move container flags into boolean members of the container slot.

Also moves them from being common flags into container specific members.
Update documentation, add lines for each container property into the item info data.
Move iuse::picklock into an iuse_actor
Move the bionic lock pick action into a pseudo item

using the same iuse_actor as the other lock picking items, thereby being able to open the same doors with the same messages.
Harmonize "unlock door" messages:

Use a door type specific message instead of inserting the door name into a common text.
Same for damage/destroy tool message.
Fix crash in bionics window:

don't delete the windows used to display the bionics menu, also add a refresh_all which will redraw the screen, including the sidebar that contains the message of the failed invocation of bionic.
Merge branch 'armor-slot' of https://github.com/BevapDin/Cataclysm-DDA into merge2