[sieve] Date and Index Extensions: return false instead of SIEVE_FAIL

From [RFC5260] Section 4. Date Test
   The date test returns false unconditionally if the specified header
   field does not exist, the field exists but does not contain a
   syntactically valid date-time specification, the date-time isn't
   valid according to the rules of the calendar system (e.g., January
   32nd, February 29 in a non-leap year), or the resulting string fails
   to match any key-list value.

Section 6. Index Extension does not specify what to do if the specific
occurrence of the header field does not exist.  It makes sense to
return false in this case instead of SIEVE_FAIL.

SIEVE_FAIL cancels execution of the entire script, which causes the
message to fall back to the implicit keep.