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
mapgenson: add place_(monster|items), misc changes/fixes/cleanups.
Also change format keys to objects
json(array|object).throw_error("string"); what it says on the tin
nuke test json
cleanup