Moved date available check to participant #3802

so that the check can be used by the reconsent scheduling rake task
First pass at rake task #3802

to schedule re-consents
specs for date_available #3802
Fixed copy/paste error

Reason param sent to PSC was from copied method.
Use the Cancel Consent message instead.
Duplicate Informed Consent Events #3897

After an event has been updated we do several things:
1) Update activity state in PSC
2) Update associated Informed Consent events
3) Advance Participant through state machine
4) Cancel scheduled consent activities if participant has already consented

This commit adds item #4 above - the canceling of scheduled consent
activities if the Participant has already Consented.

There are some whitespace changes in this commit so sorry
for the difficulty in looking at the substantial change - the
addition of the `cancel_scheduled_consents_for_consented_participant`
Move logic onto ScheduledActivity #3897

There was some business logic on the PatientStudyCalendar class
asking if the ScheduledActivity was able to be cancelled. This commit
moves that logic onto the ScheduledActivity as it is the thing that
knows whether or not it can be cancelled.
added date parameter to appointment sheet #3785
adds general consent to consent list #3785
made date range more flexible #3785
updated specs and features #3785
protecting against nils #3785

Related to a bug noticed in training where 
#event_time cause a "can't convert nil to a
string" error
blank value protection #3785
unnecessary javascript annotation #3785
Add mandatory marker on questions #3741

For the internal surveys, some questions are required.
This commit defines some questions with the :is_mandatory attribute.

Also only phase two consents should create the associated
participant consent sample records.
Required consent attributes #2106

Pulling code from Registar implement mandatory fields
in Surveyor. That is if a question is marked as mandatory
redirect the user to that section of the survey if the user
attempts to "finish" the survey but has yet to answer all
mandatory questions.
initialize with person and date object #3785

Have the controller manage the processing of
parameters into objects for use by the model,
instead of the model handling this task for 
itself.
Updated documentation #2106
Update based on feedback #3802

The Participant#date_available_for_informed_consent_event?
method should only take a Date (not either a Date or String) so
update this method and callers accordingly.

This date can be given by the user calling the rake task to
schedule reconsent events via highline.

In all places attempting to schedule a participant notify the
user of the progress or of any issues.
1st pass at determining window #3914

The window start and end dates for an event
implement event window computation and tests #3914

This has to work around the mother incorrectly being associated with
child events. The only case not handled is when multiple children
exist with different birthdays. It will arbitrarily pick a birthday to
use as the window offset.