Extract WorldSettings to be a separate class

This allows the WorldManager class to stay somewhat smaller.
Implement support for read-only worlds

This needs to be refined, just like the pre-login modification blocking
mechanism, but it's pretty good already :).