Geometries inherit from ol.Observable

Because ol.Observable is now a struct, we have stricter type checking (hence the extra assertions).
Remove ol.geom.GeometryEvent

This removes geometry specific change events.  Since geometries are mere observables, we only get generic change events.  To minimize changes in other places, as a workaround, we cache geometry bounds on features.  This is not the way things should be long term, but the objective is to remove the geometry specific event.
Export DEVICE_PIXEL_RATIO and HAS_TOUCH from ol.BrowserFeature
Merge pull request #1393 from fredj/browserfeature-export

Export DEVICE_PIXEL_RATIO and HAS_TOUCH from ol.BrowserFeature
Merge pull request #1382 from tschaub/observable-geometry

Remove geometry specific event type.
Merge remote-tracking branch 'openlayers/master' into vector-api
Add pixelRatio to ol.source.Image#getImage
Add pixelRatio to ol.source.Image#createImage
Add pixelRatio param to ol.Image constructor
Use the image pixelRatio in ol.renderer.canvas.ImageLayer
Add hidpi option to ol.source.ImageWMS and ol.source.MapGuide