More improvements to the ui interaction.

Links can be manipulated through dragging and also by
clicking at the src and destination with two clicks.

Only one link can be selected and manipulated at a time.
Multiple nodes can be selected and moved.
The selection set of nodes can be controlled with ctrl and shift modifiers while mouse clicking.

The new interaction is based in the Interaction class.
It maintains a small internal finite state machine.
The user's inputs will move it to the next state.

The existing Drawables have been cleaned of interaction logic.

Noticed a slight bug which pops up from time to time while interacting with nodes and links.
It seems like the system or device buffer is getting corrupted from the
node and link manipulations.  I see extra garbled stuff in the display sometimes.
It's hard to repro though.
More improvements to the ui interaction.

    Links can be manipulated through dragging and also by
    clicking at the src and destination with two clicks.

    Only one link can be selected and manipulated at a time.
    Multiple nodes can be selected and moved.
    The selection set of nodes can be controlled with ctrl and shift modifiers while mouse clicking.

    The new interaction is based in the Interaction class.
    It maintains a small internal finite state machine.
    The user's inputs will move it to the next state.

    The existing Drawables have been cleaned of interaction logic.

    Noticed a slight bug which pops up from time to time while interacting with nodes and links.
    It seems like the system or device buffer is getting corrupted from the
    node and link manipulations.  I see extra garbled stuff in the display sometimes.
    It's hard to repro though.