Add API to allow loading arbitrary worlds (not from disk)
Issue description
It can be desirable to load worlds which do not use standard disk-loading providers. For example, one could hypothetically create a world format in which chunks are saved in a mysql database.
At the moment, this is inconvenient to do within PocketMine-MP, because the server does not have any concept of a level which doesn't exist on disk. This can be worked around by creating a dud directory with dud files in it that the provider can identify as its own and then do its real thing, but this is rather inconvenient.
This proposes that plugins should be able to create levels with arbitrary providers and assign them to the Server (or the server's LevelManager - planned refactor) without the level needing a folder on the local disk.
N.B.: I'm aware that there are significant technical barriers to implementing a mysql world provider even once this is resolved, due to chunk loading being necessarily synchronous. This will be resolved by #1895 .
This could probably be as simple as WorldManager->addWorld() which would just invoke this code: https://github.com/pmmp/PocketMine-MP/blob/5325ecee373bbba5fb9e4a42ffbe38adb8655e6c/src/world/WorldManager.php#L250-L254
Although obviously we'd need checks to make sure the world wasn't already registered and all of that jazz