creates a new Date but with the optional parameter overrides.
Date<T> copy({int? year, int? month, int? day}) => Date<T>(year ?? this.year, month ?? this.month, day ?? this.day);