misc *_group fixes and dehackifications

mongroup: provide non-autovivicating means of validity checking.
item_groups.json: guns_with_ammo boolean to replace hard-coded if group == "livingroom" || "behind_counter"
mapgen place_spawns/items: implement the above and _whine_ instead of spitting out null_item or who knows what
item factory load: use global body_parts string-to-int map, nuke
set_bitmask_by_string(...) as it was only used by set_flag_by_string(...),
and casting body_parts to map<Item_tag, unsigned> no workie.

Also eliminate std::string init frenzy via const std::string & args
nuke-a-comment(tm)
json(array|object).throw_error("string"); what it says on the tin
Fix memory access violation
add some l10n fix
Merge misc. fixes.
Merge disease segfault fix and i18n fixes.