Extensible Topicmaps API (#519).

For the sake of extensibility both, standard and custom view properties are hold in a generic "viewProps" object (a CompositeValueModel). Thus the addition of custom view properties neither require changes in the Topicmaps API neither require the author of a Viewmodel Customizer to provide its own REST API for updating the custom view properties.

The Topicmaps API has a new method:
{{{
void updateViewProperties(long topicmapId, long topicId, CompositeValueModel viewProps)
}}}

This generic method can be used for updating both, standard and custom view properties. The methods for updating standard view properties (moveTopic() and setTopicVisibility()) remain in the Topicmaps API for convenience reasons.

BREAKING CHANGE

Changes in Topicmaps API:

The "x", "y" paramters of the addTopicToTopicmap() method are replaced by a generic "viewProps" parameter.
{{{
void addTopicToTopicmap(long topicmapId, long topicId, CompositeValueModel viewProps)
}}}
To set the standard view properties use these keys:
{{{
dm4.topicmaps.x
dm4.topicmaps.y
dm4.topicmaps.visibility
}}}

The REST API has changed accordingly:
{{{
POST /topicmap/{id}/topic/{id}
}}}
The view properties are contained in the message body.
Both CompositeValueModel serialization formats are supported ("canonic" and "compact").

The REST client has changes accordingly:
{{{
dm4c.restc.add_topic_to_topicmap(topicmap_id, topic_id, view_props)
}}}

See #519.