Implement types.visit as an alternative to types.traverse.

This work began over in the recast repository (see
https://github.com/benjamn/recast/pull/99), but ultimately it made more
sense to implement here, since I want to deprecate types.traverse
eventually, and I don't want to add recast as a dependency of ast-types.

Exposing the computeSupertypeLookupTable interface was necessary when
PathVisitor was implemented in the recast project, but now that we've
moved PathVisitor into ast-types, it makes more sense to keep this
interface private.
Add tests of types.visit.
Reimplement types.traverse in terms of types.visit.
Politely warn about the deprecation of types.traverse.