Storing selection layer and selected features on the layer

With this change, other interactions that rely on selection can
get along without knowing about the Select interaction.
Removing no longer needed getFeatureWithUid method.
Adding equals method for comparing coordinates
invalidateBounds method on geometries
Method to set vertices.

This might not be the right way to deal with in-place geometry
changes, but for now it is useful for editing.
Adding ModifyFeature interaction

This is a first draft. The way geometry changes are handled for
now is a bit clumsy. Both updating the feature cache RTree and
making the layer aware of feature and geometry changes could be
handled in a smarter way if these changes would be made through
the layer instead of directly on the geometry or feature.
Exporting Modify interaction
Fixing doc tag
Correctly modify bounds
Update example with more distinct colors and no social links
Making addIndex private
Separate add listener from method that adds index
Rename method
Updating header
Do not split segments while in the loop

In combination with the additional squaredDistanceToSegment
check we can ensure that a future vertex is only created on one
segment per feature, and only on the segment that it appears on.

This change also renames the misleading dragVertices_ member to
dragSegments_.
Filter by pixel tolerance before showing the future vertex
Write modifications back to the original layer

With the feature's getOriginal() and setOriginal() methods, an
undo tree can be maintained now.
Use new setCoordinates methods
Do not create a vertexFeature with [NaN, NaN] coordinates

The RTree cannot work with NaN coordinates. So instead of
preparing a vertexFeature before we know a coordinate, we now
lazily create the vertexFeature.
Give temporary and future symbolizer a higher zIndex

This puts the editing vertex on top of the edited geometries.