Add gun data to auxiliary gunmods and handle them as first class guns.

This removes the MODE_AUX flag from the gunmods and adds the gun data, taken from the gunmod.
The mods data is reset to default values that don't affect anything. The firing code and the functions in the item class use the gun data of the mod, they don't even need to know that the item is actually a gunmod.

recoil_add can now use the actually fired gun item, same with handle_gun_damage.

Needs preventing mods from being modded just like regular guns.
Restructure initial code in player::fire_gun:

First decide whether to fire a gun or a gun mod,
Then check for the CHARGE flag, this allows gun mods to have that flag and it allows charge guns to have active gunmods.
Adds a debugmsg for gun with no ammo.
Using item::set_curammo to let it do the magic of getting the correct it_ammo instance for us.
Moves the comment to where it makes sens.
Move more stuff that is modified by gunmods and exists in guns into a common structure.

Prevent display of aim_speed and sight_dispersion of mods when they are -1 and don't apply at all.
Add gun data entry to auxiliary gunmods to make them proper guns.

Someone needs to replace the placeholder data!

Remove the islot_gunmod::mod_dispersion, it was loaded from the json member "dispersion" which is now a member of the gun data and is now loaded through the gun data slot.
clip_size_modifier, range and ammo_modifier are both optional in gunmods and therefor removed, but added to the gun data where at least the ammo and the clip size are mandatory.
Disallow firing gunmods as single item (not attached to a gun).

And add a line about this restriction to the item infos.

Prevent those gunmods from appearing as gun in the inventory (default category).
Rename gun item functions to have gun_ prefix:

item::recoil to item::gun_recoil

For consistency with other gun functions and for clarification and distinction from functions applying to other item types.
Make item::range fit for gunmods:

Use the guns/gunmods range as base, than add range from ammo.

Make the player parameter mandatory (but it can still be null) and const.

Extract some logic for gun range calculation into separte function, similiar to the other gun related functions.
It allows gunmods to affect the range (positively or negatively).
Note that gunmod and gun data are separate, auxiliary gunmods can affect the range of the base gun.
Move handling of charge gun into the item class:

Store the flag that indicates such a weapon into a separate constant.

All references to that kind of item should now be in the item class.