Validates a non-required date string value using IsValidDate():
    - if invalid adds InvalidValue error (if problems accumulator is provided)
    - an empty date string is regarded as valid! Otherwise we might end up
      with many duplicate errors because of the required field checks.

def ValidateDate(date, column_name=None, problems=None):
  """
  Validates a non-required date string value using IsValidDate():
    - if invalid adds InvalidValue error (if problems accumulator is provided)
    - an empty date string is regarded as valid! Otherwise we might end up
      with many duplicate errors because of the required field checks.
  """
  if IsEmpty(date) or IsValidDate(date):
    return True
  else:
    if problems:
      problems.InvalidValue(column_name, date)
    return False