introduce concept of 'layers' which can be occupied (by units)
defer occupation of cell to move behavior class so air units only occupy
air layered cells and the ground units ground cells. Because the
is_occupied already checks at the layer that is context of the move
behavior, it will cause the air unit not be affected by ground units.

Fixes #20