Neuron navigator: factor out neuron list table creation

This change puts the creation of a neuron list table into its own function. This
makes re-use easier. It also improves readability of the content creation
function of the neuron list node. While at it, the table ID has been adjusted to
reflect the content.
Neuron annotations: honor the fact that neurons can have multiple skeletons
Neuron navigator: support co-annotations

Filters like user or annotation provided by the navigator are only valid for one
level. Co-annotations differ in that respect. If an annotation has been selected
and one chooses a co-annotation right after that, it adds to a combined
annotation filter. That is, user or neuron selections after will honor not only
the annotation chosen before, but also the co-annotations that have been
selected after it.
Neuron navigator: make last user node a constraint

If there is one, the last user node in a path will add a user filter constraint.
Neuron annotations: add dedicated method for annotation query creation
Neuron annotations: add query for annotations based on skeleton ID
Factor out skeleton model creation in own function
Skeleton: factor out arbor creation into dedicated method
Skeleton splitting: add basic dialog to front-end

It shows the split in a 3D viewer and gives the user the option to distribute
the existing annotations on both new sub-skeletons.
Neuron annotations: factor out annotation creation

The actual annotation creation now has its own method. This simplifies re-use of
it.
Skeleton splitting: add annotation based splitting

When splitting the front-end and the back-end now require that one part
maintains all previous annotations. The first part is referred to as 'over' and
the second one is called 'under'. The under skeleton will now be a model of a
newly created skeleton which also gets all the under annotations.
Skeleton splitting: show message when no annotations could be found
Skeleton splitting: rename dialog to SplitMergeDialog

The same dialog should also be used to merge skeletons and this should be
reflected in its name.
Neuron navigator: make active skeleton/neuron accessible
Skeleton splitting: update permission system

A user is now only allowed to split a skeleton if this neuron is not annotated
'locked' by another user.
Neuron annotations: include user information in annotation list

The list returned by /annotations/list is now a list of objects which contain
the annotation name as well as the user name and ID of the user who linked
the annotation. If the constraints used are not strict enough, the query could
in principal return the same annotation multiple times, because multiple users
might have used it. Therefore, distinct() is used and the user referenced in one
result object is the one that was chosen first.
Add user id to session information returned to client
Add small style change
Skeleton splitting: test locking before dialog is created

The split/merge dialog won't be shown if the active skeleton is locked by
another user. This isn't done in the dialog itself, because the dialog would
already be visible in an unpopulated state.
Catch potential index error when requesting neuronname/-id