Added an abstracted clipping scope, converted more of the widgets over to new code. Added more functions to the 2D canvas.