function AutoScroll(config, eventBus, canvas) {

  this._canvas = canvas;

  this._opts = assign({
    scrollThresholdIn: [ 20, 20, 20, 20 ],
    scrollThresholdOut: [ 0, 0, 0, 0 ],
    scrollRepeatTimeout: 15,
    scrollStep: 10
  }, config);

  var self = this;

  eventBus.on('drag.move', function(e) {
    var point = self._toBorderPoint(e);

    self.startScroll(point);
  });

  eventBus.on([ 'drag.cleanup' ], function() {
    self.stopScroll();
  });
}
Initiates canvas scrolling if current cursor point is close to a border.
Cancelled when current point moves back inside the scrolling borders
or cancelled manually.

Default options :
  scrollThresholdIn: [ 20, 20, 20, 20 ],
  scrollThresholdOut: [ 0, 0, 0, 0 ],
  scrollRepeatTimeout: 15,
  scrollStep: 10

Threshold order:
  [ left, top, right, bottom ]

@param {Object} config
@param {EventBus} eventBus
@param {Canvas} canvas