visitors should be shared

* extract visitor
* share visitor

before
```js
node benchmarks/esnext-transform es6-object-short test-input/* 
running...
  - test-input/controller-es5.js x 380 ops/sec ±8.42% (69 runs sampled)
  - test-input/controller.js x 385 ops/sec ±5.09% (75 runs sampled)
  - test-input/empty.js x 7,467 ops/sec ±8.25% (71 runs sampled)
  - test-input/jquery-1.11.1.js x 2.52 ops/sec ±11.96% (11 runs sampled)
  - test-input/simple-export-default-class.js x 3,766 ops/sec ±3.83% (82 runs sampled)
```
after
```js
node benchmarks/esnext-transform es6-object-short test-input/* 
running...
  - test-input/controller-es5.js x 374 ops/sec ±16.83% (66 runs sampled)
  - test-input/controller.js x 422 ops/sec ±9.49% (75 runs sampled)
  - test-input/empty.js x 78,459 ops/sec ±8.27% (83 runs sampled)
  - test-input/jquery-1.11.1.js x 3.04 ops/sec ±7.17% (11 runs sampled)
  - test-input/simple-export-default-class.js x 6,461 ops/sec ±3.38% (85 runs sampled)
```