Prevent parts being installed on top of spikes/blades.
Merge branch 'master' into buildings_json

Conflicts:
	game.h
	init.cpp
	mapgen.cpp
	settlement.h
Fix missed merge conflict.
The new input system currently doesn't work with the existing key re-binding screen, making it currently unsuitable for the main game loop. This workaround prevents the new system handling keyboard input in the main loop,instead only handling mouse input.
Fix infinite loop when chopping tree into planks with full inventory.
Guilt about killing monsters gradually decreases
Add one finale message when the player no longer cares about kills
Code improvements and final touch-ups
Initial commit, vehicle overmap tracking.

Add enable/disable gps entry to vehicle control menus
Implement basic tracking that works for up to 3 overmap tiles away,
after that the vehicle note will follow the player around.
Save vehicle.gps_on boolean
Vehicles save their overmap location.

Vehicles will save their own overmap location using the levx and levy
fields + the omap_x() and omap_y() fields.
It still needs work however as it is not updated correctly when the
player teleports away.
Remove comments about merging overmap vehicle code
Use om_vehicle struct to track vehicle overmap coords

Create new struct om_vehicle that tracks a vehicles overmap coordinates
and name, this seperates vehicle overmap data from the vehicle itself
allowing the overmap to save/load it independently from vehicle
instances.

om_vehicle structs are stored in a map using their id as key, the id
also stored in the corresponding vehicle instance so it serves as a link
between the two.

Add 1 new methods for the overmap class, overmap::add_vehicle which
takes a vehicle instance, creates a new om_struct instance and generates
an id for it, then it is stored in the vehicles list and the id is
returned.

overmap::remove_vehicle has been updated to handle the new vehicles map
and now it takes an id instead of a vehicle instance.

overmap::has_vehicle and overmap::print_vehicles has been modified to
use the new om_vehicle structs but nothing else has been modified.

Add 2 methods for the vehicle class, vehicle::update_map_x() and
vehicle::update_map_y() which along with updating the vehicles own map
coordinates update their correspoding om_vehicle struct (if it exists)
coordinates.
Update om_vehicle.name along with vehicle.name
Save vehicle overmap information
Persist vehicle notes accross overmaps
Print overmap vehicle names in cyan
Add gps module item required for vehicle tracking.

Add a recipe, item and vehicle part for a vehicle gps tracking unit that
is required to track the vehicle on the overmap.
Add PDA requirement
Return absolute value instead.