TabView shouldn't make assumptions about labels

This is a very common question in the forums.

At first I thought it was agreed that components should escape content to prevent XSS vulnerabilities, but `tabview.add({ label: '<span>foo</span>' })` seems to be working. However, progressive enhancement is still removing HTML.

This patch changes the way tabs are added from markup. Instead of reading the content of the label and resetting it (which resets the label HTML and breaks existing node references) it just sets the `contentBox`. Then `Tab` is changed to have a getter that returns the html inside the content box, just like the `content` attribute does with the panel node.

This question is still open though: do we allow HTML by default or do we add an extra `HTMLTab` subclass of `Tab`?