Implemented risk measurement for edges in the connectivity graph between neurons.

The javascript side needs work.
graph.py: do not label branch nodes when minifying an arbor by synapse clustering.
graph.py: do not compute risk for autapses; rather, label them as so.
Better docs for a function in tree_util.py
graph widget: checkbox toggles for names and to cut names at the first semicolon.
graph.py: compute edge risk only when not minifying arbors.
Make the middleware report the full stack trace of any exception.
graph.py: label branch nodes appropriately in minified arbors.
graph widget: simplify and improve.

 * start off with a force-directed layout.
 * render branch nodes smaller in minified arbors
 * simplify GUI: no more "update" button, selecting the layout triggers re-layout.
 * acknowledge state: if short labels, or if no labels.
Clustering: Add toolbar button to create clustering window
Clustering: Add basic clustering front- and back-end
Clustering: allow sub-path as features

When selecting the "Use sub-paths as features" option, all sub-paths
starting at the root on a way to a leaf will be added as features, too.
This means a path doesn't need to end with an ontology defined leaf, but
it can also end in the middle to be respected by the clustering.
Clustering: use SciPy to do the actual clustering
Add gRaphael line graph v0.5.1 library
Add world/screen coordinate translation methot to gRaphael line chart
Add min/max axis options to gRaphael line chart
Clustering: draw a basic dendrogram
Clustering: show cluster names when hovering the dendrogram
Clustering: add basic scaling of dendrogram

The scaling can be adjusted by a small trianle handle in the bottom
right of the dendrogram. Currently it is preserves the aspect ratio of
it.
Clustering: add 'select all' checkbox for input graph selection