Changed LocalDate::withDay() to throw an exception if the day is invalid

Added missing checks in withYear(), withMonth() and withDay().
Added documentation.
Updated MonthDay::withMonth() to resolve day-of-month overflow to the last day of the month

The previous behaviour was to throw an exception like withDay().