Add and remove features with meaningful events

This adds a removeFeatures method, and makes the CHANGE event
more useful by adding information about changed features and
extent.
New pruneTileRange method

This also adds an assert that cache values are an instance of
ol.Tile in expireCache, instead of doing a type cast. Later we
will want to enforce the ol.Tile type by overriding the set
method.
Expire tile by range and listen to changes

Instead of just listening for the first change, we now listen
for all changes, and expire tiles by tile range. The outcome is
that the vector layer's addFeatures and removeFeatures methods
now show instant results on the rendered map.
Removing addFeatures from the API
Re-adding type cast, as suggested by @elemoine
Merge pull request #850 from ahocevar/vector-events

Render changes when adding and removing features
Use plovr-2013-rc3
w3c_device_sensor_event.js is now supplied with Plovr
Use goog.events.Key
Fix invalid typecasts
Fix various type errors related to features
Fix various type errors in ol.structs.RTree
Use setElementShown instead of showElement
Add missing call to base class
Use regex module to work around arbitrary limitations in re

Our automatically generated regular expressions break Python's random
and arbitrary limit of 100 groups. See
  http://stackoverflow.com/questions/478458
Add some type hints in ol.array
Add some type hints in ol.extent
Add some type hints in ol.Kinetic
Add some type hints in ol.layer.Layer
Add missing private member