Changed the DatePair Logic

Initially when datePair created with only one date, it is referring to
startDate. Now when only a datePair with one date, it will be reffering
to endDate only.
As there is only 3 possibilities:
1. 1 end date
2. A pair of dateRange
3. or a task with no date

Not related test are also removed
Move toString for DataPair to correct place
Add safety checks in DatePair to guarantee startDate is before endDate
Move isWithinPeriod method from Logic to DatePair/Task.

Note that no test is created yet.
Merge branch 'quality_control'
Hotfix checking in DatePair

Note that setStartDate and setEndDate should NEVER be called manually in code. These two methods are for XML loading ONLY.
Fix a logic bug in DatePair.isWithinPeriod()
Temporary fix for Task.toString()
Fix a possible bug in Task.isWithinPeriod which may be triggered when there are several null values in dateList
Refactor a little bit in LogicTest
Merge branch 'quality_control'
Merge branch 'master' into interface