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.)