Add wrapping to player::use_charges and player::charges_of for "UPS"

The wrapping interprets a request for charges from itype:
- "UPS" as request for "UPS_on" and "UPS_off" (meaning both item are considered),
- "UPS_on" as (additionally) request for "adv_UPS_on" (both "UPS_on" and "adv_UPS_on" are considered) and as request for active bionic "bio_ups".
- similar for "UPS_off" and "adv_UPS_off" and for bionic "bio_ups" (active or not).

Adds player::has_active_UPS to check for any kind of active UPS (adv./normal/bionic)

Use generalized UPS charges for most stuff that requires UPS charges and use has_active_UPS for for stuff that needs a UPS.

Makes the has_(amount|charges) and (amount|charges)_of const
Move the removal of item mods into functions

The code was repeated several times, that's not good.
Use player::i_add_or_drop instead of dropping the removed mods.
Use item::tname for the name of the modded item.

Also check for the mod in the item_tags, not via item::has_flag as that function looks into the flags of the item type first. We should not change the item type, so we have to modify only item where the mod is used on the item, not on the type.
Enhance UPS mod usage:

Charge items in players possession (if they are modified to use the UPS) to their minimal usable charges.
Disallow the UPS mod on the UPS items itself.
When the item has the flag CHARGEDIM (flashlight), ignore it when used with a UPS mod. This makes the item appear fully charged and emit the full light.
contact lenses->effects, removed unused disease enums
boomered->effects
Updated CMakeLists.txt

Need it for generating a compilation database, for use with YouCompleteMe etc.
More grid access refactors.

Yup, I overlooked some in mapgen.cpp
Move player designated zones into player class/their own files.

What was this doing in map.h?
Safely erase savegame entries when they're inaccessable in shared mode.
Adds locked gates to hacksaw target list

Fixes #8168, thanks BevapDin for the pointer.
Restores shock_staff damage

it's an upgraded ironshod, not an upgraded wooden one, so per the forums
its damages should be higher.

http://smf.cataclysmdda.com/index.php?topic=7221.msg161104#msg161104
(CR) Clothing upgrade

Seeing as we're asking folks to start in mid-March 20-50F, rather than
65F, I think it's only fair we let 'em evac with a bit warmer gear.

The Generic Survivor gets a light jacket, and everyone who doesn't have
a clear reason NOT to have socks gets a pair.  (It's truly amazing how
many folks didn't have socks!)

This is open to discussion and changes; for instance, I could agree with
issuing a sweatshirt instead of the T-shirt & jacket combo.  Let's talk!
fix JSON

Thanks for the catch, Rivet.
Fix ghost options in SDL build
Removed ghost options on any build
fix joystick description
Port remaining parts of npc code to item position system.

Use the item position instead of the invlet of the item,
or (in case of trading which removes several items at once) use the item pointer instead of the invlet.
Apply the item position system to the remaining places.

Use item position instead of invlet everywhere.

The only functions in the player class still using invlets is invlet_to_position.
It return the item position of the item with the given invlet. It is only for the user interface, internally everything uses the item position.
Code that used the invlet with other functions (i_at(char), has_item(char)) will now get the item position and than use that value.

game::drop: use the item-vector as parameter to store the taken off armor. Than drop the items from that vector. This does not require any invlet information at all.

game::unload: don't assign an invlet directly, let the inventory class handle it.

Pickup::pick_up: don't assign an invlet, let the inventory class handle it. Auto-wielding still assigns an invlet.

Rename inventory::position_by_letter to invlet_to_position to be consistent with the function of the same purpose in class player.

Added debug message to player::position_by_letter when called on a npc, npcs should not use the invlet system at all.
Replace add_item_by_type by proper item creation

And add the item by player::i_add instead of putting it into the inventory directly.
Fix naming of the heavy crossbow.

The only source for the name "Ganz-Rustung" are a few posts in
<http://thearbalistguild.forumotion.com/t22p30-medieval-crossbows-photos-drawings-diagrams>.
I talked to the contributor (?) of the heavy crossbow and this thread was
their source. As a German with some exposure to the middle age reenactor
scene, I have never ever heard of a crossbow referred to as "Rüstung",
it is in this context purely a term for armor. Most likely the source of
the name visited a museum and confused the labels on two showcases.