Friendly fire modifier

Implementation for #5618.

ValidTarget and InvalidTarget on weapon allows/prevents targeting. (<- Was an existing feature)
ValidTarget and InvalidTarget on warhead allows/prevents damage + spread damage. (New)
ValidTarget and InvalidTarget on both weapon and warheads now understand the following keywords related to stances/diplomacy: "Ally", "Neutral", "Enemy" (New)
Currently it acts exactly like the weapon's validtargets, in that it can accept anything. Ally, Enemy and Neutral are simply special case keywords, since they need extra logic to check diplomacy, rather than just doing straight "Is X in list Y" lookups.