Implement dates restriction

Calendar has new `min` and `max` functions to define inclusive range of
valid dates.

Range checking is performed by DayRange implemented using Bounds.
When rendering calendar dates ourside of the range are rendered with
`invalid` CSS class, so that can they be styled differently from valid
dates.

Days will not fire 'change' event for invalid (out-of-range) dates.
Calendar ignores attempts to select invalid date, although is allows to
show it.
Document new `min` and `max` methods
Merge branch 'infastructure-fixes' into pu-1
Merge branch 'leap-year' into pu-1
Merge branch 'constrain-dates-bounds' into pu-1