Added upgrades

This adds a new build queue and a new type of buildables named upgrades, they might need some extra variables to tweak but this is a start. Also included a test upgrade to test, let me know when you want to merge and I will remove it.
Please don't introduce specific unit trait dependencies into core RTS logic.

I'm not sure why you need this, but there will be a more generic way you can do it.