Fix craft from vehicle again

Part of map::use_charges() got reverted such that it was no longer calling use_charges_from_map_or_vehicle(), which means charges from e.g. welders were not being consumed during vehicle construction.
It looks like vehicle::consume_vpart_item() was never updated to pull from map-or-vehicle, so I refactored it to use the map methods, making the distinction transparent, and eliminating some redundant code.
Fixes #5598
Fixes #5599
Fixes #5605
Fixes #5608