Add garrison support for player-owned units

This cleans up the Attack* and muzzle flash code, and adds support for transports (including buildings) that let their passengers shoot through defined firing ports.

The RA pillboxes have been migrated to this new system.
Support for garrisoning civilian structures will be done in a future pr, as this will first need EffectiveOwner to be implemented uniformly through the engine.