Fix _DateTimeTextBox missing params issue.

If a _DateTimeTextBox (DateTextBox or TimeTextBox) instance is created
without any parameters passed, an error is thrown because `params` is
assumed to exist.

Fixes #18243.
Allow specifying the start and end of the visible range in the picker.
Adds new pickerMin and pickerMax properties to _TimePicker, which can
be set indirectly through the TimeTextBox via the constraints property.

Also a lot of general cleanup of comments etc.

Based partly on original patch from Joerg Sonnenberger, thanks!

Fixes #18200.