Fix vehicle damage crash

Refering to #4245: Some vehicle parts are not damaged by an explosion.
The reason is probably that bash damage (`map::bash`) is only done if the location has the TFLAG_BASHABLE flag. Only vehicle parts that have VPFLAG_OBSTACLE and are not open doors trigger this, therefor a shopping cart on a plain tile makes the tile not bashable and therefor `map::bash` gets not called.

This PR removes the check for the bashable flag and calls `map::bash` always.

The change reveals a bug with vehicles and removing parts on damage.
I tested it with some 1-tile vehicles (Swivel Chair, Luggage Cart, Unicycle, Shopping Cart, ...). None of them have an OBSTACLE part, so when parked on an open area their locations are considered non-bashable and are not bashed during explosions.
This PR changes this, the vehicles get destroyed (tested with RPG-rockets).

There is a bug in `vehicle::damage_direct`, the block where the structural part gets removed should be outside of the loop.