Pass data item *and* index to color function.

Typical d3 behavior is to pass a data item *and* its index. As the
render queue splits the original data set, we'll have to be slightly
more carefull about passing the correct index with the data item.
Initial code for pinch selection.

This is the foundation code to draw pinch lines between each pair of axes.
The actual filtering is not yet implemented.
Add an example to demonstrate pinch selection.
Add support for removing a pinch.

This is currently implemented by a single click in the area of the pinch.
Simplify code.

I discovered d3.mouse, so now the initialization is properly done on
dragstart. I also reuse the dimensionsForPoint function to get rid of some
partly code duplication. As a consequence, pinch is now behaving more
correctly when it is started outside the left or right bounds of the plot.
Separation of concern: don't clear in drawPinchLine.

This (imo) is slightly cleaner than what I had before.
Fix a typo.
Implemented basic pinch functionality.

For now it just works for one pinch at a time.
Naive first stab at removing pinches.
Add a bit of documentation.
Keep track of the active PC segment
Do some bookkeeping to keep track of which segments are strummed.

This also introduced "strum*" as proposed by @syntagmatic.
Make sure that the second point is never exactly on the axis.

If allowed to be exactly on the axis, it will not select anything.

@syntagmatic do you understand why (and if so car to explain)?
First stab at getting filtering working with multiple strums.
Last bits and pieces to make multiple strums work.

* a (dragstart, dragend) sequence, i.e. without a dragmove in between, is
  basically the same as a click. So adjust the dragend code to deal with
  this case and remove the on click handler.
* The width function on strums now needs an id as we can no longer rely on
  strums.active being set. And in any case, it was wrong in the filtering
  code as it would always get the width of the active strum in stead of the
  current strum under consideration for filtering.
* The ids array must of course be initialized *after* the currently active
  strum has been removed from strums.
Emit an event when the order of axes has changed after an axis drag.
Remove strums on axes reorder.

This could be made smarter, as not all strums are necessarily affected by
an axes reorder.
Make strum removal on axes reorder a bit smarter.

We now only remove a strum on axes reorder when the two axes of the strum
are no longer consecutive.