Refactor, use simple movement class index.

 * Move DomainIndex from being a manual hard-coded hook in World to an IWorldLoaded trait.
 * Instead of simple water/ground divisions or a full graph traversal, just compare based on
   movement class traversal for each movement class rule.
Refactor DomainIndex
  * The domain index for one movement class doesn't need to be aware of
    other movement classes.
Add support for bridge construction

Each movement class is given a crude transientDomain graph.  Whenever a bridge state
changes, the domain index rebuilds the relevant cells, setting its domain and creating
a transient domain connection.

This graph is searched as a fallback if the straightforward domain comparison is false.
Behavior needs to be double-checked, and ideally destructing connections would be supported,
but so far performance and behavior on allies-02 seems good.