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.

(cherry picked from commit a3688f79500859e73fb26bcdd91bcda66b793c5b)