Core: inject service dependencies (#695).

BREAKING CHANGE

A plugin gets the plugin services it consumes via injection. There is a new @Inject annotation.

So, the plugin developer is no longer required to supply the boilerplate code (`serviceArrived` and `serviceGone` hooks). These 2 hooks and the @ConsumesService annotation are obsolete.

Old pattern (example):
{{{
import de.deepamehta.core.service.PluginService;
import de.deepamehta.core.service.annotation.ConsumesService;

public class YourPlugin ... {

    private TopicmapsService topicmapsService;
    private FacetsService facetsService;

    @Override
    @ConsumesService({TopicmapsService.class, FacetsService.class})
    public void serviceArrived(PluginService service) {
        if (service instanceof FacetsService) {
            facetsService = (FacetsService) service;
        } else if (service instanceof TopicmapsService) {
            topicmapsService = (TopicmapsService) service;
        }
    }

    @Override
    public void serviceGone(PluginService service) {
        if (service == facetsService) {
            facetsService = null;
        } else if (service == topicmapsService) {
            topicmapsService = null;
        }
    }
}
}}}

New pattern (example):
{{{
import de.deepamehta.core.service.Inject;

public class YourPlugin ... {

    @Inject
    private TopicmapsService topicmapsService;

    @Inject
    private FacetsService facetsService;
}
}}}

See #695.
Adapt plugins to Core change (#695).

Inject service dependencies

See #695.
Merge branch 'master' into workspace-acl