research/upgrades are available

research/upgrade works similar to current training process;
add TechTypes/UpgradeTypes to the researchStack/upgradesStack and the
method will find the first possible in the list

also cleaned up training a bit