Core: extendable server-side events (#290).

A plugin can introduce custom server-side events (and the corresponding listener interfaces).
Other plugins can implement listeners for these events.

Core API:
there is a new base class for all Events: `de.deepamehta.core.service.DeepaMehtaEvent`.

Introducing a custom event:
{{{
package my.cool.plugin;

import my.cool.plugin.event.MyEventListener;

import de.deepamehta.core.service.DeepaMehtaEvent;
import de.deepamehta.core.service.Listener;

class MyCoolPlugin extends PluginActivator {

    static DeepaMehtaEvent MY_EVENT = new DeepaMehtaEvent(MyEventListener.class) {
        @Override
        public void deliver(Listener listener, Object... params) {
            ((MyEventListener) listener).myEventHandler(
                (MyParamType1) params[0], (MyParamType2) params[1], ...
            );
        }
    };
}
}}}

Specify the listener interface:
{{{
package my.cool.plugin.event;

import de.deepamehta.core.service.Listener;

public interface MyEventListener extends Listener {

    void myEventHandler(MyParamType1 param1, MyParamType2 param2, ...);
}
}}}

Listening to custom events is analogous to core events:
{{{
package another.plugin;

import my.cool.plugin.event.MyEventListener

class AnotherPlugin extends PluginActivator implements MyEventListener {

    @Override
    public void myEventHandler(MyParamType1 param1, MyParamType2 param2, ...) {
        ...
    }
}
}}}

See #290.