[SPARK-4205][SQL] Timestamp and Date classes which work in the catalyst DSL.

These Timestamp and Date classes support the usual comparison operators, so they can be used in catalyst Expressions.  They come with implicit conversions to and from the underlying Java classes.  They also have a convenient initializer which accepts a String.

Additional implicit conversions fix an issue with the DSL where expressions like 0 < 'x are not recognized.

OK I see you point. However, `Row` is used extremely frequently on many critical paths, so in general we choose to detect type errors while query planning, rather than introduce per row type checking cost here. It's somewhat similar to static typed programming languages like C++: once your program compiles, types are guaranteed to be matched (unless you add nasty type casting tricks intentionally), and you don't need to check types everywhere manually. The query planner is just the compiler here.