Core: fix updating aggregated composites (#574).

When updating an aggregated composite no error occurs.

As a by-product of that fix you can now have aggregated composites in your model and edit such a complex topic via the Webclient. This works now for the first time with the Webclient's standard renderers (see #30).

So a first version of what we called a "Editor for aggregated composites" (see #337) is now available. However it is just in its first incarnation that will possibly not survive for long. In its current form it realizes the most cautious approach in regard of unwanted semantic side effects (see comments in #30): every time an aggregated composite is edited a new instance of the composite is created. Thus a lot of possibly useless (because unassigned) topics remain in the DB.

CHANGES

Core API: there is a new model class:
{{{
de.deepamehta.core.model.TopicReferenceModel
}}}
A reference to a topic, either by ID, or by URI.

BREAKING CHANGES

The Core Service's composite object update logic does not rely on a fallible heuristic to detect weather a TopicModel represents actually a topic reference (based on ID and URI) but utilizes explicit TopicReferenceModel instances for that purpose (analogous to TopicDeletionModel).

When your plugin creates a TopicModel object to represent a reference (e.g. to pass it to the Facet Service's updateFacet() call) you must now create a TopicReferenceModel instead. Otherwise your update call will throw an error resp. have unexpected results.

See #574.