recast intends visitors to be shared

before:
```js
node benchmarks/esnext-transform es6-spread test-input/*                                  !10031
running...
  - test-input/controller-es5.js x 343 ops/sec ±8.91% (81 runs sampled)
  - test-input/controller.js x 338 ops/sec ±9.38% (75 runs sampled)
  - test-input/empty.js x 8,216 ops/sec ±7.40% (74 runs sampled)
  - test-input/jquery-1.11.1.js x 3.04 ops/sec ±7.06% (12 runs sampled)
  - test-input/simple-export-default-class.js x 3,575 ops/sec ±4.76% (80 runs sampled)
```

after:
```js
node benchmarks/esnext-transform es6-spread test-input/*
running...
  - test-input/controller-es5.js x 423 ops/sec ±9.43% (75 runs sampled)
  - test-input/controller.js x 421 ops/sec ±10.06% (80 runs sampled)
  - test-input/empty.js x 79,023 ops/sec ±8.30% (80 runs sampled)
  - test-input/jquery-1.11.1.js x 3.29 ops/sec ±3.47% (11 runs sampled)
  - test-input/simple-export-default-class.js x 6,360 ops/sec ±9.72% (82 runs sampled)
```