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.
Added basic plot showing user activity during a set period.
Fixed error, 'M' key binding must add "soma" tag, not "not a branch".
Remove spurious argument to function call.
Merge remote-tracking branch 'origin/master' into synapse-clustering
Django backend test to display plots
Faster pan. Correction in documentation
Run gevent example
No duplicates in skeleton group
Neuron Staging Area independent.
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