Extract a label widget.

This will make re-use in other widgets easier. Once widgets are in
a registry, this class will allow easy replacement of label generation
everywhere.
Refactor radio widget to use the label widget.

The registry class will be able to co-ordinate dependencies between
widgets. Reusing widgets will allow developers more control on how HTML
is generated.
Update doc blocks.

Add missing templates sections.
Use label widget in multi-checkbox widget.
Merge pull request #2665 from markstory/3.0-label-widget

3.0 label widget