Warhead cleanups

This removes the remaining redundancy and floating point calculations from the warhead damage calculations.

The following are left for a future PR:
* Remove the redundant legacy "0% = no targeting" assumption.
* Remove the PerCellDamageWarhead type (which is bogus, and only used by the crate nuke weapons that we forgot to update when fixing the real nukes).
Would it be possible to retain the AbsoluteSpreadDamageWarhead?

There are scenarios in which using multiples of the spread (even with adjustable factors) will not work as well as being able to define non-multiple spreads.

Ex:
https://github.com/UberWaffe/OpenRA/commit/1766f2101c95e7bd6be498759d2767633c60df3d#diff-c15bd279247b81e6f78858149d736ef2R146
https://github.com/UberWaffe/OpenRA/commit/08ff4ca9d903c3ef302804829c95303f1ad90e5d