* added early out in UpgradeWarehouse when not enough cash
* added checks to enforce maxProducts
* added checks to enforce export material is valid for location
* added checks for market ti reasearches
The API can already toggle smart supply on/off, but can't manage the
related controls for whether smart supply will draw from the existing
materials in the warehouse. Without it, we can't keep some resources in
storage to boost the production multiplier without disabling smart
supply entirely.
Before:
CorporationInfo.state was returning "[Object object]".
After:
CorporationInfo.state returns an actual state like START, PURCHASE, PRODUCTION, SALE, EXPORT