Fix layout issue in skeleton analytics container.
Initial version of the synapse clustering python script.

Takes a skeleton ID or a graph representing it (and the synapses)
and returns data structures representing implicitly the groups of skeleton
nodes, each group being a synapse cluster.
graph.py can now split the skeletons further with synapse clustering.
The edges between circuit elements belonging to the same neuron are not yet implemented.

Signed-off-by: Albert Cardona <sapristi@gmail.com>
Added scipy=0.11.0 to pip-frozen, necessary for synapse clustering.
Reduced operations in graph.py and synapseclustering.py
from 0.33 to 0.29 seconds, and reduced memory footprint.
Most of the operations are in the dijkstra scipy side of things.
Graph widget: synapse clustering results in minified arbors,
each node of the arbor connected to other nodes of other arbors
to make visible axo-axonic synapses, etc.
Removed a number of debugging statements.
Fixed error, 'M' key binding must add "soma" tag, not "not a branch".
Merge remote-tracking branch 'origin/synapse-clustering' into neuron-staging
Update cytoscape.js. Remove cytoscapeweb
Correct color value for graph widget. Scipy optional
Correct color value for graph widget. Scipy optional