Tracing tool: inherit basic actions from Navigator

... instead of defining them all over again.

This commit removes the navigation actions (zoom, pan) from the
Tracing tool and instead gets them from Navigator.

It also removes a keycode ambiguity between '.' and 'DEL'. Moving
down in z now only works with the actual '.' key and not with the one
on the numeric keypad. Before, in Navigator, one could also move down
in z with the 'DEL/.' key on the numeric keypad. However, this key is
used to delete the active node in the Tracing tool.
Add small and simple event bus

This event system can be used to decouple different parts in CATMAID.
For instance, being notified about the change of the active skeleton or
active node is easily possible with the Events object. The producer (who
actually changes the active node) would trigger the event:

  Event.trigger('active-node-changed');

A Consumer, like maybe the 3D widget, that is interested in such an
event would register a callback for this event:

  Event.on('active-node-changed', callback);

A QUnit test has been added.
Event system: support custom arguments for trigger and callbacks

If additional arguments are now passed to trigger(), they will be
forwarded to the callbacks.
Event system: allow for custom contexts of callbacks

To specify the context in which the callback is executed, the on()
method now excepts a third argument. If it isn't provided, the event
object is used as context.
Event system: add proper credits

Most of the desing comes from the following website:
https://corcoran.io/2013/06/01/building-a-minimal-javascript-event-system/
Organize imports

The main goal of this reorganization is to avoid wildcard imports and
"transitive" imports. After all, explicit is better then implicit [1]
and makes it much easier to understand where things are coming from.

All tests from [2] passed.


1. Wildcard imports:

from catmaid.models import *
from catmaid.control.authentication import *
from catmaid.control.common import *

can, for example in the case of log.py, be replaced with:

from catmaid.models import UserRole, Log
from catmaid.control.authentication import requires_user_role 


2. Transitive imports are confusing. See this example: 

from catmaid.control.authentication import requires_user_role, UserRole

This is not wrong, but relies on the authentication module importing
UserRole [3]. UserRole is a model from catmaid.models, so that's where
it should be imported from:

from catmaid.control.authentication import requires_user_role
from catmaid.models import UserRole



[1] http://legacy.python.org/dev/peps/pep-0020/
[2] https://github.com/acardona/CATMAID/commit/edadf8c08bbe
[3] http://stackoverflow.com/questions/18722531
Fix whitespace/indentation errors

no changes to the code other than changing indentation from 2 or 3
spaces to 4.
Label: fix typo
Ontology: fix typo

relid -> rel_id
Event system: simplify use as mixin in other objects

The extend methods copies all properties and functions of the event
system to another object. This makes it easier to use it in different
objects.
Event system: add more documentation
Event system: return extend object after extension

This simplifies the use of the extension method.
Event system: add clear function to remove all listeners of an event
Event system: make trigger function more robust

Improve robustness by not expecting an event to be registered and check
if it exists before trying to iterate over its listeners.
Event system: add method to unregister single callback
Event system: handle trigger() without listeners
Merge branch 'add-event-system'
Trigger an "active node changed" event if the active node changes

Since this event shouldn't be fired if nothing changed a test for this
is added.  The event is only triggered if there was a real change.
3D viewer: listen to the active node's change event

This also allows us to remove the direct call to the 3D viewer in the
active node update code within the tracing layer.
Neuron dendrogram: move highlighting code into prototype function

This makes this code more reusable, e.g. when a sub-tree should be
highlighted due to the change of the active node.