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.