Added tiberian sun vqa file support
Changed aspect ratio implementation
Added "Capture-the" Flag
Add min range to bazookas

Fixes #7000
Do not show cargo on radar map

Fixes #6990
Added IDisabledTrait & rewrote upgrade code using a level-based approach.

	Upgradeable traits are notified whenever an upgrade of their declared types are granted or revoked.  The traits maintain their own internal level counter, which is then used to enable or disable the trait functionality.  A trait can register for multiple upgrade types which then all affect the internal level counter.

	IDisabledTrait for identifying (and filtering) disabled traits
	UpgradableTrait provides an abstract base for traits to support upgrade levels
	Added IDisabledTrait support to GlobalButtonOrderGenerator

	Includes rework by pchote with alterations.
Merge pull request #6750 from atlimit8/ITraitDisabled

Added IDisabledTrait & UpgradableTrait with upgrade levels support
Added Upgrade support to Sellable
Merge pull request #6878 from Mailaender/captureable-flag

Added a captureable flag
Added upgrade support to RepairableBuilding
Added RepairableBuildingInfo.CancelWhenDisabled
Merge pull request #6638 from DeadlySurprise/tsVqa

Tiberian Sun .vqa support
Merge pull request #6745 from atlimit8/SellableByUpgrade

Upgrade support for Sellable
Merge pull request #6760 from atlimit8/RepairableBuildingByUpgrade

Repairable building by upgrade
Implementation of the automated D2k Carryall

Closes #2246
Add myself to Authors
Merge pull request #6780 from MatthijsBenschop/d2k-caryall

D2K: Implement automatic Carryall
Lazily generate buffer in Sheet.

The managed byte buffer is created on demand, meaning a newly allocated sheet will not waste memory holding onto the buffer until some changes are actually required to be written. This avoids a newly allocated sheet wasting memory on buffers that do not differ from their backing texture.
Made Sheet.Texture into Sheet.GetTexture() since we will want to call it for side-effects.

Do the same for Sheet.Data since it has the side effect of generating a buffer.
Release sheet buffers in SequenceProvider and MapCache.

The buffers in SequenceProvider can be freed if Preload is called, since we know everything is loaded. A SequenceProvider is created for each TileSet is use so this saves memory for however many tilesets had been used in the game. This will be at least one for the shellmap, and often more.

The MapCache loading thread is kept alive for 5 seconds after it last generated a map (in anticipation of more requests). Once this time expires the thread is allowed to die, as it is unlikely there will be more requests in the short term. At this time it is ideal to force the changes to be committed to the texture so we can release the buffer. As well as marking the buffer for release, we must access the texture to force the changes stored in the buffer to be written to the texture, after which the buffer can be reclaimed.

Additionally, when starting the MapCache loading thread we must ensure the buffer is created from the main thread since it may query the texture object which has thread affinity. After that the buffer may be modified freely on the loading thread until released.