Check for participant.person

The recent commit e61f0bc1 changed the method used
to find participants to update. This change returns participants
without associated person records (how this is possible I do not
know and requires investigation).

This commit simply checks if this association exists and if not
then logs that record and continues (as the person association
is required to cancel activities in PSC as the person public_id
is the unique id in PSC.)
Filter informed consent events #3767

When advancing a participant, if an event is not sent
as a parameter we use the most recent event. If that event
is an Informed Consent event the advance does nothing.

This commit filters the Informed Consent event from the list
of events used if event given is nil.
Revert 28bf9eee #3444

New guidelines confirm that a withdrawal is a new participant
consent record rather than an update of an existing consent.

Closes #3444
Set withdraw attributes #3444

and clean up participant after withdrawal

cancel activities in PSC after withdrawal
set person who withdrew consent
child_first_name_the_child_upcase #3793

method added to instrument_context

Closes #3793
@surveys check for nil

in case of ParticipantConsent and
Non-Interview report actions
format whitespace