Introducing <spark-dialog>

@devoncarew @financeCoding

Splitting the dialog-related changes into chunks. This CL is just adding new widgets, not actually using them anywhere.