resources reservation now using Consumer owners

this is better than agents because it will allow us to implement direct calling
of consumer.fillNeed() when resources are available for it instead of relying
on onResourcesChange() and/or update() calls which require more checks
and thus more CPU cycles!
added Consumer reservation improvement to Supplies (like in Resources)
update structure building agent to newer Consumer-based getters

also added a throw in constructor because this class isn't ready for prime
time and needs further debug and implementing
make supply cleaned up auto-generated methods
added producers collection to needs manager
base agent now implements producer

Base will soon becom workers units producers
moved producers accessors
new convenience methods for checking Units.Types from Unit & UnitType
units manager contains quick check  convenience method

used to verify if the player has at least one unit of a specific UnitType
(wip) Units.Requires class fr storing units dependencies

to allow proper resolution of units dependencies (e.g. what structures are
required to build a specific unit ?), for now only a subset of protoss units
dependencies have been added
(wip) added experimental draft for upgrades dependencies
(wip) draft for need "expension" when needed by missing dependencies

this uses the Units.Requires dependencies collection to add all missing
dependencies (e.g. if I want a corsair => I need nexus, gate, core, stargate)
the supply and resources dependencies are not taken into account because
they are resolved "just in time" by the needs manager
fixed bug when reserved resources map would return null

this happens when no key matches the provided one in map.get(key)
fixed bug when map would return null value (e.g. no matching key)
added supply getter to NeedSupply specialized Need subclass
cleanup of auto-generated methods
(quickfix) temporary replaced  worker move by patrol to prevent ramp lock
supplies manager no longer implements consumer
added list of consumers to supplies manager

same mechanism as Resources to allow picking first/last/etc consumer
because the reservedSupply map isn't ordered and doesn't allow this
added list of consumers to resources manager

same mechanism as Supplies to allow picking first/last/etc consumer
because the reservedMinerals/reservedGas maps aren't ordered collections

also replaced -1 events by true values ones to avoid unwanted bugs