createmap was a hack that is getting in the way of API development, and it affects many elements. It's only needed because there was no default projection that could be upgraded later, so things like layer creation and validation had to be delayed. But the resulting code is really hard to reason about, so let's see if we can improve that situation.