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.
Separate add listener from method that adds index
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_.
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
Parent information no longer needed

Now that we can do setCoordinates, we no longer need to create
new geometries and assign them to a parent.
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.
Use accessor for components
Using new squaredDistanceToSegment and closestOnSegment
Updating header
Update example with more distinct colors and no social links

Conflicts:
	examples/modify-features.html
Common style for drawing and modifying
Adding equals method for comparing coordinates
Refactoring for better layer management

The only feature on the temporary layer is now the
vertexFeature, and the temporary layer's style is dynamically
changed to the style of the layer whose segment is being edited
(the topmost layer if more than one segment are being edited).
With this simplification, we can also put all segments on a
single RTree. Finally, we no longer rely on structures set on
layers - all we need is now on the instance itself.

This refactoring also changes the way we define layers to
participate in modification - by using an array or a filter
function, or assuming all layers if no layers property is set.
Removing unused method
Fixing api doc comment
Minor stylistic clean-ups and more symmetry
layerFilter can no longer be undefined here
Make addLayer and removeLayer methods private
Merge pull request #1269 from ahocevar/modify-interaction

Modify interaction for feature modification