Metadata tagging general tool AND csstag usecase 


### The purposes of this pull request (high priority first):

- provide a general API for metadata tagging linked with DOM class tagging
- specify an API for a particular usecase namely csstag
- a minimalist clean of create_element hierarchy, because I have needed it

### Details:

To provide an API in all kind of cell I've had to work in Cell class, but originatly, this class doesn't provide any DOM element, specificaly not the base div element of the cell. So I ve moved a bit the design of create element (produce no change at all in the DOM, at any stage).

Then, I code two general functions able to handle  synchrone metadata tag and class tag in DOM.

Eventually, I propose an API for class tagging, in order to perform notebook layout using only css selectors and class tagging. In my mind, there is only need to tag the base <div> of the cell, css selectors job is to track subelement and apply rules. 

Can you move that where add_tag is define. I know that Brian would want that, as in python docstring just after the function definition. In recent chrome at least this allow to see the docstring if you just `> function` without calling it into the JS console.