#5618. Diplomacy Stance checks on weapons and warheads.

Adds Diplomacy keywords for ValidTarget checks.
Changes:

Allows diplomacy stance checks to be done on warheads and weapons, using keywords in ValidTargets and InvalidTargets.
Additional changes: Changed Weapon.Impact to use Target instead of WPos. Moved some common functionality to DamageWarhead from derived classes.

Closes #5618.

Note. This pull request does not include the updated map.yaml for the various maps, but the upgrade rules are included.

Will create a test branch tomorrow.
This will abruptly step from 100 damage at 2c8 to 0 damage at 2c9.  Is this intended?  You need to explicitly define a 0-damage value if you want it to gradually fall off to 0.