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'm not sure how to reduce this other than implementing phase 2. (It simplifies this portion of the code a lot.)
But I am still cannot figure out how to allow a trait to have multiple sub-entries of a class.
(I.e. a new class decision needs to be nested within SupportPowers within yaml. Cannot get the yaml to load the data in the decision subclass).