Fixed construction of the world

The 2 phase construction scheme works.
First, each Location's default constructor will be called. This is just
to allocate the memory space.
Second, each Location has a construct() function that gets called. This
adds all the meat to the Location, like aspects and items. If these
aspects or items have references to Locations, they will point to the
proper place.
This also means that only Locations can be stored in World. This is
somewhat annoying because if you have an aspect that is a lockable door,
it is nice if that sort of exists between locations.
Now if you want to lock a door and have it lock on both sides, you have
to search through the aspects on the other side and find the door that
links back and lock it also. That door isn't guaranteed to be there, so
we just have to assure that it will be when we build our game.