Remove itype::corpse

It's only used for the single generic corpse item. Instead set it inside the item constructor.
This is exactly the same behavior as before.
Remove the old standard_itype_ids vector.

Instead let the item_factory export that vector via a function.
Also let item_factor export the map of all itypes, but a const map, so other code (like auto_pick testing) can use the itype pointers directly.

Item that were previously not in that vector (defined in game::init_itypes) get the PSEUDO flag for now, so they can be detected later.
Remove the old artifact_itype_ids vector.

Moves the function to create new artifact ids into the item_Factory class.
Storing artifacts iterates over all item types instead of only the artifacts. By casting it to the proper artifact itype it checks whether the item is an artifact and stores them.
Loading artifacts adds the new artifacts directly to the item_controller instead of to itypes.
Add wrapper function to item_factory to access itype data easier.

Instead of getting the itype instance and getting data from it, one only needs to query the data from the item_factory:

Item_factory::nname() is a wrapper around itype::nname
Item_factory::count_by_charges() is a wrapper around itype::count_by_charges
Remove access to global itypes map

replaced code uses either the item_controller directly or gets the data via a temporary item instance.
Movie loading and storing morale_point into savegame_json.cpp
Remove the global itypes map.

Move game::init_itypes to Item_factory::init_old,
remove all remaining references to the itypes map.
Item_factory::init_old loads the new itypes directly into the Item_factory.
Make item_controller a std::unique_ptr instead of a raw pointer.

To trigger deletion upon program end.

Also cleanup some includes.

Especially game.h is *not* needed!
Export MISSING_ITEM item id as constant.

Renamed to EMPTY_GROUP_ITEM_ID because that its only usage.
Moved the creation of that type into itypedef.cpp along with the other old itypes.
Removed Item_factor::m_missing_item as it is not really uses. One can use Item_factory::find_template instead.
Item_factory::register_iuse_lua: use std::string, not C-string.

Also add debug statement when overriding function names.
Item_factory::calc_category: take const itype because we won't change it.
Rename Item_factory::clear_items_and_groups to reset

More consistent with other reset functions and it also clears the item categories, which was not reflected by the name.
Combine two Item_factory::check_* functions into one.

This is more consistent with other parts, and it is also useless to make this separate. Both things (item groups and item types) must be checked anyway.
Add documentation to Item_factory
Use Group_tag and Item_tag consistently in Item_factory