Cleaned up the ingame widget initialization

This makes integrating the ingame map editor https://github.com/OpenRA/OpenRA/pull/4496 easier, but is also a nice cleanup in itself.
It's a modular widget logic class.