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
Function to buffer an extent
When expiring tiles, consider max symbol size

When an extent is invalidated, we have to expire tiles outside of that extent to account for symbolizer size.
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