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.