Topicmaps: store custom view properties (#505).

The server-side viewmodel customizer has a new method:

    void storeViewProperties(Topic topic, CompositeValueModel viewProps)

It is invoked by the Topicmaps plugin when custom view properties needs to be stored in the DB. Its up to the (server-side) viewmodel customizer to store the properties it feels responsible to.

Now the cycle is really complete:
    1. Topicmaps viewmodels are enriched by custom view properties at server-side.
       Done by server-side Viewmodel Customizer's enrichViewProperties() method.
    2. Custom view properties are accessed at client-side to inform the custom rendering.
       Done by client-side View Customizer's draw_topic() method.
    3. Topics added to a topicmap are enriched by custom view properties at client-side.
       Done by client-side Viewmodel Customizer's enrich_view_properties() method.
    4. Custom view properties of topics added to a topicmap are stored at server-side.
       Done by server-side Viewmodel Customizer's storeViewProperties() method.

So, plugins can customize the Canvas rendering as well as the underlying viewmodel by implementing a View Customizer (client-side only) and optionally a Viewmodel Customizer (client-side and server-side).

BREAKING CHANGES

Change in (server-side) ViewmodelCustomizer interface:
    - enrichViewProperties() replaces modifyViewProperties()

See #505.