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.
Read out view properties at client-side (#505).

View Customization Framework:

The canvas view facade passed to a view customizer constructor has another property:
{{{
get_topic -- a function with a "topic_id" argument
}}}
The view customizer author can call this function to access a particular TopicView object e.g. to read out its view properties.

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

See #505.
Topicmaps: unregister viewmodel customizer (#505).

View Customization Framework:

The Topicmaps API has a method to unregister a viewmodel customizer:
{{{
void unregisterViewmodelCustomizer(ViewmodelCustomizer customizer)
}}}

A viewmodel customizer author should call this method once the Topicmaps service goes away. Otherwise hers plugin might have problems when redeployed.

See #505.
Webservice: errors are mapped as well (#484).

The JAX-RS Exception Mapper maps errors as well (not just RuntimeExceptions).
Thus the exception log is still readable when e.g. a NoClassDefFoundError occurred.

The provider class is renamed:
{{{
RuntimeExceptionMapper -> CatchAllExceptionMapper
}}}

Close #484.
Merge branch 'master' into pax-web