Add curtains to vehicle doors

This also enables the use of multiple openables on a single tile
add door curtains to default vehicles
Fix checking if outside in vehicle::open()
Melee weapons can take wear and tear damage based on their primary material.

They still don't lose their effectiveness when damaged, but that comes
next.
Some math tweaks.
Added helper invlet lookup method to speed up inventory operations.
Makes melee weapons' damage respect their own state of damage.
Weapons can be destroyed by accumulating enough damage.
Made weapon damage into a function of its own.

subtitled: HOLY CATS I MADE A FUNCTION ALL ON MY OWN!
Better 'weapon destroyed' message handling.
Made damage degradation more intelligent.
Damage mod tweak.
Makes all the degradation code better.
DURABLE_MELEE items, smarter code, items can be damaged by smashing stuff with them.
Merge remote-tracking branch 'origin/master' into melee-weapon-degradation
Refactored city generation loop to remove repetitive code.
Anything made of the proper materials can now be soldered. Firearms can be accurized using the proper kits.
Implement wing mirrors and add a first go at the item definition.
Add wing mirrors to APC for easy testing.
Making firearm wear a bit more aggressive.