Repair bonus based on amount of players repairing

See OpenRA/OpenRA#3748

More than one player can now contribute to repairing a building.
Base repair amount is multiplied by value of array
Players who can't afford to contribute are ignored
Repair indicator cycles between each player's color.

Implemented an integer square root extension method  to avoid floating point accuracy errors

Changed Math.Sqrt() to ISqrt where applicable

For instance, not in graphics code