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.