loading-errors: Fix issue with messagebus subscription

As the comment says, sometimes the loading process is interrupted due to
game issues before the corresponding subscription was called.
loading-errors: Ask whether self.ships exists yet
loading-errors: Ask whether self.world exists yet
loading-errors: Try to handle halfway initialized collectors

Attempts to fix #2005 by introducing quite some amount of boilerplate
code. *Please* check whether these changes make sense, and whether we
actually want to introduce code like this.

In any case the collector code seems in dire need of larger refactoring.
Initialize `self.ships` in world.__init__

As pointed out by @squiddy, World in particular defines a huge amount of
attributes outside of __init__ still. Not sure myself we can move around
all of those.
Revert "loading-errors: Ask whether self.ships exists yet"

No longer necessary after 9668f85.
This reverts commit d7aa4c8c9f4f42584587d4aea80ebaea6cc44762.
loading-errors: Five more attributes for World.__init__

Still not claiming this is all we need, but at least it helps.
Merge pull request #2019 from unknown-horizons/loading-errors

More graceful error handling on failed savegame load