Basic implementation of view components.

ViewComponents are used to describe the structure of a rendered view
and sets it into relation with the model.

E.g., a conventional component is a NodeComponent. This tells that
a view component is a full fledged, top-level node view.
On the other side, a PropertyComponent is responsible for a node's property.
Define first view structures for NodeView and CoverView.
Several fixes.
Cleaned up node and node view implementations.

- Removed old editing API.
- Introduced new Selection API at some places.
Implement the Selection interface for FigureView.
Fix.
Introduced the concept of Node Surfaces.

Node Surface dpes the DOM/Model coordinate mapping
and the provision of subcomponents.
Trying to reuse the TextSurface in CoverSurface.

Humble still.
Use the TextSurface within TextView for incremental DOM manipulations.
Fixes.
Add a name property to components that make it easier to recognise later.
Update lable in FigureView on changes.
A surface for citation cards.