[SPARK-4205][SQL] Timestamp and Date with comparisons / DSL literals

This is the same as pull request #3066, which I closed due to corruption of the repository after I tried to rebase so as to include modifications to a test file added after the original pull request was issued.

There are two parts:
(1) new RichDate and RichTimestamp classes provide comparison operators, which allows them to be used in DSL expressions, and initializers which accept string representations of dates or times;
(2) new implicit conversions are added which allow recognition of DSL expressions which have a literal on the left, e.g. 0 < 'x . 
Please replace al `/* *` to `/**`, 'cause the former is not recognized by Scaladoc.