Make shock damage make sense.

Fixes #3053 and adjusts the whole "shock damage" system in general.

I already changed it in a previous PR so that shock damage would only damage frames (since it's essentially vibration, which the frame would absorb the brunt of, not stuff screwed/welded/duct-taped onto the frame). It's also kind of absurd that running over a zombie makes your seatbelt explode.

Well, no longer!

* Shock damage now applies from the *correct location*, instead of always applying from (0, 0).
* Shock damage now always applies, instead of with a one_in(square distance) chance, and only if it was over 100 damage, but (as mentioned) only to frames.

Shock damage is halved with every square from the collision point, and never applies to the collision point itself (since it already took collision damage).

In essence, you'll have to repair the front of the car more often and the back of the car almost never (unless you actually reverse into something or have zombies whack the back of your car). This also means you can be more economical with your armor, since armor protects from collision damage but not shock damage - armor up the front of your car and you'll be good to go.

(You also won't have gas tanks 20 tiles away explode when your 3-block-long vehicle bumps a spitter zombie, @EkarusRyndren.)

Example: You hit a Jabberwock in a semi doing 140km/h for 600 damage.

* Old system: The box near the passenger's-side bed is (0, 0) (for whatever reason). All parts adjacent to that will take 300 damage 50% of the time. The next 'ring' of parts will take 150 damage 25% of the time, and so on. The actual area hit by the Jabberwock only takes collision damage.
* New system: The frames around the impact point take 300 damage. Frames next to those take 150 damage, and so on. Other parts are unaffected, most notably including the gas tanks nowhere near the impact point.