Use require("recast").visit instead of types.traverse.

This has been a good exercise for me to see how well the new visitor API works, and it has already led to some key improvements, such as https://github.com/benjamn/ast-types/commit/1eae84eb7f9628af7cdfe7b26a87f8f3f7a091eb

I left the `visitSuperCall`, `visitSuperCallMemberExpression`, and `visitSuperMemberExpression` functions where they were (instead of moving them into the list of visitor methods) so that the diff would be more readable.

Note that
```js
var visitor = types.PathVisitor.fromMethodsObject({ ... });
```
is essentially the same as
```js
class Visitor extends types.PathVisitor { ... }
var visitor = new Visitor();
```
but alas it would be tricky to use ES6 class syntax to implement a transform for ES6 classes!