Optimize canvas hit detection by rendering features in a limited extent

Inspired by @tsauerwein's work in #3065, this adds an optimization for hit detection with the Canvas renderer.  Features are only considered for hit checking if their extent intersects a buffered extent around the provided coordinate - using the buffer from the new `renderBuffer` property for vector layers (see #3061).

In some unscientific benchmarking, it looks like this cuts the hit detection time by up to 50% (~2.3ms v. ~4.9ms in the vector layer example and ~9ms v. ~16ms in the synthetic points example in worst case scenarios).

You could use

```js
/**
 * @type {ol.Extent}
 */
var hitExtent;
if (goog.isDef(this.renderBuffer_)) {
  hitExtent = ol.extent.createEmpty();
  ol.extent.extendCoordinate(hitExtent, coordinate);
  ol.extent.buffer(hitExtent, resolution * this.renderBuffer_, hitExtent);
}
```

and thereby avoid creating an extra array. Minor.