Show which vertices were *actually* (un-)banged in GUI

The core does not allow you to construct a graph with non-open !-boxes.
If you try to (when either adding vertices to or removing vertices from
a !-box), it will extend the !-boxes as far as necessary to make them
open again.

This means that if you have a bare wire, for example, and bang one end,
the other end will be banged as well.  If you then try to unbang just
one end, nothing will happen.

The information about exactly which vertices were (un-)banged is now
returned in the protocol, and this is used by the GUI.  Note that in the
case of unbanging, we actually just refresh the graph.

Closes #82
Do not open more than one copy of a rule in the GUI

Closes #100