Search for item type in itypes when not found in Item_factory::m_templates because newly created artifacts add their itype only to itypes and not to Item_factory::m_templates.

Removed the c_str call whose result is converted to a std::string anyway.
Move artifact item type creation to map::spawn_artifact

This is the earliest point that is common for all artifact creations and there is no need to pass the artifact property through item to Item_factory.
That also eliminates the need for the artifact.h include in Item_factory.h