Introducing <spark-dialog>

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