Graph: report on the number of disabled nodes in the "Show hidden" button text.
Graph: reimplemented server back end to speed up basic case

The basic case does not split skeletons in any way,
therefore there is no need to retrieve all treenodes of every skeleton.

Additionally, the synapse clustering is applied only when appropriate.
Overall the new approach attempts to minimize operations at the server side
as much as possible.
Graph: add coloring modes

* by source (default)
* by review status (like in the connectivity widget)
* by input/output ratio (red: only outputs, green: only inputs)
* by betweenness centrality (using a jsnx.DiGraph)

Also fixed a number of incorrect uses of node.id() when node.data('skeleton_id')
was meant.