Store view properties at client-side (#505).

1. View Customization Framework:

The canvas view facade passed to a view customizer constructor has another property:
{{{
set_view_properties -- a function with 2 arguments: "topic_id" and "view_props"
}}}
The view customizer author can call this function to change view properties at client-side, e.g. once a "style" dialog box is closed. The properties will be changed at 3 spots: the view, the viewmodel, and the DB.

For an example see the Box Renderer:
https://github.com/jri/dm4-box-renderer

2. The Topicmaps service's setViewProperties() method is accessible via REST:
{{{
PUT /topicmap/{id}/topic/{id}

CompositeValueModel in the message body
}}}

The REST client is extended correspondingly:
{{{
dm4c.restc.set_view_properties(topicmap_id, topic_id, view_props)
}}}

3. JavaScript utilities:

js.copy(src_obj, dst_obj) is a new method to copy properties from one object to another.

4. Webclient CSS tweaks.

BREAKING CHANGES

1. Topicmaps API:
    - setViewProperties()  replaces updateViewProperties()
    - setTopicPosition()   replaces moveTopic()
    - setClusterPosition() replaces moveCluster()

2. GUI Tookit:
    - the dialog.open() method has no "no_close_button" parameter anymore.
      A dialog box always has a close box.

See #505.