3.0 label widget

As part of #2267, and in the aim of reducing duplicate code and making a more flexible widget system, I've extracted the label widget into a separate widget.

My next pull request will be to add a registry that allows creation of widgets and solves some of the constructor dependencies.