Breaking vehicles - ready!

Closes #3797:

* Parts that take damage while at 0 HP have a chance of being destroyed. (rng(0, partMaxHP) < damageToPart)
* Destroyed parts get broken into pieces defined in their JSON entries and removed from the vehicle entirely. **Comments highly appreciated - I pulled the current piece lists out of thin air**
* Only non-critical frames can be destroyed, but even non-critical frames will have all mounted parts torn off if damaged while at 0 HP. Torn off parts are dropped intact (preserving damage) as if removed with a hacksaw and wrench.
* Parts at 0 HP also get broken into pieces if removed or replaced.

Should make clearing wreckage easier. I recommend that whoever tests this debugs themselves a sledgehammer and smashes a car into bits; it's surprisingly fun.