Add readFeatures and readProjection options to ol.format.JSON

To be able to create custom `ol.format.JSON` format.

For example, to read elasticsearch query results:
```javascript
var source = new ol.source.VectorFile({
  url: '...',
  format: new ol.format.JSON({
    readFeatures: function(object) {
      var features = [];
      var hits = object.hits.hits;

      for (var i = 0, ii = hits.length; i < ii; i++) {
        var hit = hits[i];
        var feature = new ol.Feature();
        var geom = new ol.geom.Point(hit._source.geoip.location);
        feature.setGeometry(geom);
        features.push(feature);
      }
      return features;
    },
    readProjection: function(object) {
      return ol.proj.get('EPSG:4326');
    }
  })
});
```