added Units.init() to control init order,  added onUnit...() for UnitListeners

Units.init() allows to ensure that we control when Units is initialized so that
other classes that depend on it can be initialized after it.
renamed NeedServant as NeedUnit
fixed servant units to be listed properly by their master agent
master agents can now  free their servants and give them back to others
new interface for all classes (like agents) that consume (need) units
MineralPatch properly handle and publish it's workers "needs"

Also implements UnitConsumer interface
new Needs global class to list and fulfill all unsatified needs of "consumers"

currently supports only "unit" needs (UnitConsumers that overtake newly
built units), will later have RessourceConsumers, SupplyConsumers,  etc
properly call Units.onUnit...() to forward all units events to UnitListeners
initialize Needs and Units in correct order