3.0 widget context

Pass the current form context into widgets when they are rendered. This will make it easier for widgets to generate multiple inputs. The use case that drove these changes was having a date range picker that created a start and end date input. With these changes both the start/end input values & schema data could be accessed by the widget.

Related to #3658