[vector-api] d3 integration and vector image

This PR includes three things:

- A refactoring of ol.source.Image and its subclasses, to enable the following
- An ol3/d3 integration example
- The addition of `ol.source.ImageVector` (see below)

`ol.source.ImageVector` draws vector features in a canvas, which is rendered by the map as an image. This is how it's used:

```js
    new ol.layer.Image({
      source: new ol.source.ImageVector({
        source: new ol.source.GeoJSON({
          url: 'data/countries.geojson'
        }),
        styleFunction: function(feature, resolution) {
          return styleArray;
        }
      })
    })
```

It's configured with an actual vector source, and used with a image layer (and effectively treated as an image layer by the map renderer).

Note 1: `ol.source.ImageVector` somehow brings vector support to both the DOM and WebGL renderers.
Note 2: we can introduce `ol.source.TileVector` in the future.

Feedback welcome.