Adds a gun mod to enable wearing a gun. [CR]

Fixes #7214

The last commit does the actual work, the others are there to enable it. The gunmod has a "IS_ARMOR" flag (better name appreciated), the `item::is_armor` function will now look for the item type being `it_armor` *or* the item having that flag. As the `item::has_flag` functions looks for flags in in the used gunmods, it will find the "IS_ARMOR" flag from the new gunmod and the item appears to be armor.

All the code that would refer to members of `it_armor`, has been changed to call item functions, which forward the requested member of `it_armor`, or (if the item type is not `it_armor`) return 0. That way, the contents of `player::worn` can be of any type.

However, the gun has *no* encumbrance or other armor properties because the gunmod does not contain this. This could be either added as separate properties of the gunmod, or calculated based on the items stats (bigger volume -> more encumbrance, maybe more coverage).

Or the gunmod could be changed into an `it_armor` type, with special wrapper code to handle it as gunmod, basically the same as has been done to wrap the members of `it_armor`.

Also: the new item does not spawn and has no recipe and its properties are placeholders (including name/description), I'm not good with those balance / content things, so input is appreciated.
I had slightly different approach when making wearable containers.
I added virtual method to itype as default and overloaded it in it_container and it_armor.

In item, I just have method that returns type->method()