Massive speedup of vector space walks

I discovered that I was recomputing the edge distribution for every walk, which is incredibly
inefficient.  Instead I put in a general mechanism for caching whatever can be cached at the
vertex level, and this sped things up immensely, like an order of magnitude.  The tests are now
slightly more cumbersome, but the speedup is worth it.  And I'm really glad for good tests, that
makes me confident that I didn't break anything when I did this.