Proper map extent for GetFeatureInfo request

Note that with and without this change, the pixel provided to the ol.source.wms.getFeatureInfo function will be wrong if the view has non-zero rotation.
Tests for the image wms source
Emulated click events on mouse devices

The map already emits emulated `click` and `dblclick` events on touch and pointer devices. With this commit the map emits emulated `click` and `dblclick` events on mouse devices as well.
Emulate click events only on mouse "action"

`click` events are fired only if the mouse action button is pressed. This prevents `click` events from being fired when the middle mouse button is used.

Also, without this commit, in Chrome with emulated touch events enabled, double-clicking the map doesn't zoom the map. This is because `ol.BrowserFeature.HAS_TOUCH` is `false` in that environment. The commit fixes it by testing `isMouseActionButton` on mouse devices only.
Remove unused ol.MapBrowserEventHandler#relayEvent_ func
Remove mousedown listener on first touchstart
Add tests for emulated clicks
clickOnly condition checks map clicks
Map "click" event renamed to "singleclick"

As discussed with @tschaub in #1195.
add Terms of Service to the Bing attribution

make sure the epsg4326Extent is constructed with the correct arguments
Add `@todo observable` documentation for observable properties

This PR adds documentation for observable properties, which will then be pulled into the docs correctly once #1180 is merged.  This is a first pass based on searching for definition of observable properties being defined as enums after lines ending with `Property = {`.  If there are observable properties implemented that don't follow this pattern then they are not included.

I've added simple descriptions based on what I know or could easily figure out, there may be some properties (like preload) that are not correctly described.

I've also added `readonly` annotations where I knew that a property was readonly.  I may have missed some readonly properties.

ol.layer.Base has a bunch of properties but I don't think it is exported so the documentation of these properties will not show up, so I added the documentation to ol.layer.Layer instead even though this isn't really where it should be documented.
Test that ol.Collection#extend fires events
Only set the 'valueAsNumber' property is the value is valid
[wip] Getter and setter support for bindTo
[wip] Remove 'valueAsNumber' property from ol.dom.Input