Only set the 'valueAsNumber' property is the value is valid
Map browser event handler refactoring

This commit refactors the code of the map browser event handler. The changes are the following:

Previously the `handleTouch*_` listener functions handled both `touch*` and `mspointer*` events. With this commit we use per-event type listeners. This duplicates some code (could be avoidable), but makes it easier to introduce mouse/touch/pointer specific treatments in the future.

We now listen to pointermove, pointerup, touchmove and touchend only when needed. In this way we're assured that a `down` event was received (and that `this.down_` is set) when the `up` or `move` listeners are called. This fixes the bug @oterral reported on the mailing list: https://groups.google.com/d/msg/ol3-dev/jR844F7Nlg8/eN9dt4uATK0J.

To avoid problems in browsers that trigger different types of events (e.g. both mouse and pointer events) the `down` listeners unregister the other `down` listeners. For example, the `pointerdown` listener unregisters the `mousedown` and `touchstart` listeners, for ever.
Test that ol.Collection#extend fires events
Merge pull request #1209 from twpayne/collection-extend

Test that ol.Collection#extend fires events
Merge pull request #1186 from fredj/validate_valueAsNumber

mouse-position example: Projection select issue
Merge pull request #1203 from elemoine/touch

Map browser event handler refactoring