Webclient: revise renderer file structure.

Plugins which provide renderers adhere to a new file structure:

script/
    renderers/
        page_renderers/
        simple_renderers/
        multi_renderers/
        canvas_renderers/

2 things are new here:
    - the "renderers" directory
    - "field_renderers" is now named "simple_renderers"

The term "field renderer" is now obsolete. We're talking of "simple renderers" now.
("composite renderes" are about to come, and thus the new wording is conform with "simple" and "composite" topics.)

The new wording is reflected at several spots:
    - view config setting:    "Field Renderer URI"                ->  "Simple Renderer URI"
    - the corresponding URI:  "dm4.webclient.field_renderer_uri"  ->  "dm4.webclient.simple_renderer_uri"
    - loading method:         dm4c.load_field_renderer()          ->  dm4c.load_simple_renderer()
    - registration call:      dm4c.add_field_renderer()           ->  dm4c.add_simple_renderer()

IMPORTANT: plugin developers must adapt to the new file structure and the new wording.
Webclient: revise simple/multi renderer contracts.

Renderer method names have changed.

Simple renderers:
    render_field()         -> render_info()
    render_form_element()  -> render_form()

Multi renderers:
    render_fields()        -> render_info()
    render_form_elements() -> render_form()

By convention the formal "field_model" parameter is now called "page_model".
The "field model" concept/wording and the corresponding class are absolete.

IMPORTANT: plugin developers must adapt the method names of their simple renderers and multi renderers.

Furthermore in page renderer "dm4.webclient.topic_renderer":
The "render_mode" parameter in 2 public methods takes an object (instead a string):
    - create_page_model()
    - render_page_model()

IMPORTANT: if you call these methods from your renderers you must obtain the render mode objects this way:
    var topic_renderer = dm4c.get_page_renderer("dm4.webclient.topic_renderer")
    var render_mode = topic_renderer.mode.INFO  // or topic_renderer.mode.FORM  (formerly "page" resp. "form")
    topic_renderer.create_page_model(..., render_mode)
    topic_renderer.render_page_model(..., render_mode, ...)
Core: include renderer info in PluginInfo (#284).

Get a list of installed plugins:
    localhost:8080/core/plugin

Client-side processing is pending.

See ticket 284.
Core: pick up renderers automatically (#284).

A plugin's renderers are picked up automatically:
    - page renderers
    - simple renderers
    - multi renderers

So, the plugin developer must no longer load hers renderers manually by calling these methods:
    - dm4c.load_page_renderer(...)
    - dm4c.load_simple_renderer(...)
    - dm4c.load_multi_renderer(...)
These methods are dropped.

Instead the plugin developer must respect the fixed file structure (as mentioned previously):

script/
    renderers/
        page_renderers/
        simple_renderers/
        multi_renderers/
        canvas_renderers/

IMPORTANT: plugin developers must adapt the plugins which provide renderers accordingly.

Picking up canvas renderers is pending.

See ticket 284.
Webclient: reorganize CKEditor files (#285).

Aim is to not have any CKEditor files in /web/style
The contents of that directory is about to be loaded automatically by DM.
It is expected to contain nothing but css files.
CKEditor loads its css himself.

See ticket 285.
Webclient: pick up plugin CSS automatically (#285)

A plugin's CSS stylesheets are picked up automatically.
These are all files located in the plugin's /web/style directory.

So, in most cases the plugin developer must no longer care about CSS loading by calling this method:
    - dm4c.load_stylesheet(...)
However, this call is still needed to load external CSS or from other (vendor) directories.

IMPORTANT: plugin developers must adapt the plugins which provide CSS stylesheets.
Just drop the load_stylesheet() call. Otherwise the CSS will be loaded twice.

See ticket 285.
Webclient: async loading of plugins and renderers.

The dm4c.load_script() method doesn't take a callback function as an parameter anymore, just a boolean.

IMPORTANT: plugin developers must adapt their plugins which make use of this method for asynchronous loading.