AI meta data

Work done to make AI supportpower usage slightly smarter. Refer to #5830 

Allows some basic usage rules to be defined in yaml for supportpowers.
I just noticed that these are not exposed to `make docs` at all yet.


### HackyAI
<table>
<tr><th>Property</th><th>Default Value</th><th>Type</th><th>Description</th></tr>
<tr><td>Name</td><td>Unnamed Bot</td><td>String</td><td></td></tr>
<tr><td>SquadSize</td><td>8</td><td>Integer</td><td></td></tr>
<tr><td>BuildingQueues</td><td>Building</td><td>Multiple String</td><td></td></tr>
<tr><td>DefenseQueues</td><td>Defense</td><td>Multiple String</td><td></td></tr>
<tr><td>AssignRolesInterval</td><td>20</td><td>Integer</td><td></td></tr>
<tr><td>RushInterval</td><td>600</td><td>Integer</td><td></td></tr>
<tr><td>AttackForceInterval</td><td>30</td><td>Integer</td><td></td></tr>
<tr><td>StructureProductionInactiveDelay</td><td>125</td><td>Integer</td><td>How long to wait (in ticks) between structure production checks when there is no active production. </td></tr>
<tr><td>StructureProductionActiveDelay</td><td>10</td><td>Integer</td><td>How long to wait (in ticks) between structure production checks ticks when actively building things. </td></tr>
<tr><td>MinimumDefenseRadius</td><td>5</td><td>Integer</td><td>Minimum range at which to build defensive structures near a combat hotspot. </td></tr>
<tr><td>MaximumDefenseRadius</td><td>20</td><td>Integer</td><td>Maximum range at which to build defensive structures near a combat hotspot. </td></tr>
<tr><td>NewProductionCashThreshold</td><td>5000</td><td>Integer</td><td>Try to build another production building if there is too much cash. </td></tr>
<tr><td>IdleBaseUnitsMaximum</td><td>12</td><td>Integer</td><td>Only produce units as long as there are less than this amount of units idling inside the base. </td></tr>
<tr><td>RushAttackScanRadius</td><td>15</td><td>Integer</td><td>Radius in cells around enemy BaseBuilder (Construction Yard) where AI scans for targets to rush. </td></tr>
<tr><td>ProtectUnitScanRadius</td><td>15</td><td>Integer</td><td>Radius in cells around the base that should be scanned for units to be protected. </td></tr>
<tr><td>RallyPointScanRadius</td><td>8</td><td>Integer</td><td>Radius in cells around a factory scanned for rally points by the AI. </td></tr>
<tr><td>MaxBaseRadius</td><td>20</td><td>Integer</td><td>Radius in cells around the center of the base to expand. </td></tr>
<tr><td>UnitQueues</td><td>Vehicle, Infantry, Plane, Ship, Aircraft</td><td>Multiple String</td><td></td></tr>
<tr><td>ShouldRepairBuildings</td><td>True</td><td>Boolean</td><td></td></tr>
<tr><td>UnitsToBuild</td><td></td><td>Dictionary<String,Real Number></td><td></td></tr>
<tr><td>BuildingFractions</td><td></td><td>Dictionary<String,Real Number></td><td></td></tr>
<tr><td>UnitsCommonNames</td><td></td><td>Dictionary<String,Multiple String></td><td></td></tr>
<tr><td>BuildingCommonNames</td><td></td><td>Dictionary<String,Multiple String></td><td></td></tr>
<tr><td>BuildingLimits</td><td></td><td>Dictionary<String,Integer></td><td></td></tr>
<tr><td>PowerDecisions</td><td>(Collection)</td><td>List`1</td><td></td></tr>
</table>