Improve reference date determination for scheduling. #3964.

Previously, the logic that determined the reference date for
scheduling the next event would fail when a participant had any
contacts with an MDES missing-coded date (e.g., 9777-97-97). It would
always pick such a contact as "most recent" and then complain that
the most recent contact had no date.

This fixes that problem by ignoring such contacts when picking the
most recent contact date. It also adds fallbacks to event end and
start dates for participants who have no valid contact dates at all.

It also removes the `#last_contact / #most_recent_contact` method
from `Participant`. Though that method was public, it was only ever
used inside of Participant, and only used for determining the most
recent contact date. I replaced it with a private method that just
does that.
Merge pull request #149 from NUBIC/3964-next_no_contact_date

Improve reference date determination for scheduling. #3964.