Add a new RT::Date->IsSet method

This lets you never try to remember if it was ISO or Unix that was best,
and what about timezones?  Just have a simple boolean check.
Use the new ->IsSet method, rather than checking vs ->Unix
Some bulletproofing on bad input to Unix as a setter

Since you can technically say
    $date->Unix(-5);
and
    $date->IsSet
would return 1
    but $date->ISO
would return 1970-01-01 00:00:00
we should bulletproof for insane inputs.

This lets IsSet just assume that unix time starts at 0 as intended, and
avoids all the code shenanigans removed in the previous commit which
checked for $date->Unix <= 0  or $date->Unix < 1
Correct check for explicit undef argument

The int(shift||0) is backcompat with the old behavior that
Unix("") Unix(0) or Unix(undef) all ended up setting to 1970-01-01.
Copy and tweak existing Unix setting tests that worked using Set() to
have them test Unix() also so backwards incompatibility failures are
caught in the future.
Merge branch '4.2/date-isset' into 4.2-trunk