pointers-changed: Adding the pointers changed function

Also added a cursor layer above all others.
Pointers Changed: Responding to Code Review

Added documentation for window.insert-cursor
Make the pointers-changed function more functional.
Pointers Changed: Fixing typo from rebase

Forgot to include the end square bracket from the rebase.
Added fancy wires

and a small bugfix on setting the wire styles
Changed updating behaviour

Now set-start and set-end can be called in any order, and used to move
wires around. (like before but I broke it)
Merge branch 'master' into cursor
Fixed conflicts
Interact Nodes: WireView recycling wirepath.

Making the WireView use the same wirepath in each call to _make-wire so
that it stays in its intended position in the view heirarchy.
Interact Nodes: BUGFIX: Zooming.

The wire being in a separate layer (specifically, having a different
center) to the view layer caused problems in scaling, so the wires are
now all inserted into a group in the view-layer, and everything else is
added above them.

Additionally, adding elements after scaling occurs also causes issues,
so the system now keeps track of the total scale factor and applies it
to all incoming child items.
Interact Nodes: Moving pointers-changed to be with public methods

And documenting it.
Interact Nodes: Added ability to add (dummy) nodes

Clicking on "Audio" and "Numerical" in the filter list will spawn a new
such node in the middle of the screen.
Interact Nodes: Changing Selection styles

Out-port styles are now the same as inport styles, and the datatype
colours are now preserved upon selection so that nodes can still be
identified by their type signature.

Additionally, wires now respond to being connected by turning green.
Interact Nodes: Added ability to select wires and nodes.

When a Wire is selected, selecting it again removes it.
When a Node is selected, subsequent pan events are used to move just the
node.
Interact Nodes: Cleaning up logic in select-at method.
Interact Nodes: Implementing moving nodes.

 * Node#register-output is now symmetric with Input#register-input so
   that the source node is aware of the wire it's sending down.
 * Fixed bug in WireView#_make-wire where WireView.startpos and
   WireView.endpos are not kept in sync with the translations.
Interact Nodes: BUG FIX: Leap Cursor pointer-up,moved,down events

LeapCursor was not producing the aforementioned events due to an error
in the code (A comparison was being made between a function and a value
when the comparison should have been with the result of applying the
function to a value)
Interact Nodes: Drawing Wires!

WORD OF WARNING: Holding positions of nodes/ports/wires that will change
is a *bad* idea. Better to define functions that provide you with direct
access to the position property of the paperjs Item.

 * BUGFIX: hit testing was sometimes confused by the cursor icons (as
   appear above everything else). Disambiguating by only hit testing on
   the view-layer now.
 * BUGFIX: Forgot to pass wire to rem-output instead of node (as part of
   making register-output symmetric)
 * Preventing self loops when drawing wires, as they are impossible to
   remove if they occur.
 * Removing redundant Node.sending-wires list (the Node.send-list
   variable now serves that purpose).
Interact Nodes: Removing dummy data