refactor CWorker class

Intention is to make the setters/getters somewhat more efficient
as they're called such a lot (logarithmic instead of linear).
reallocate systems only if needed
weaken an assertion
avoid some elemental operations (getting via x,y) when serializing systems
simplify SerializeSectorsAndSystems
simplify iterating in CMoralObserver::CalculateEvents
reduce getting of research complexes
reorder functions in CSector

no logic changes