Make Event#implied_by? accept Psc::ScheduledActivities.  #4085.

The two-argument form needs to stay around for now, not because there's
many methods that call it, but because Event#matches_activity? passes
parts of a ScheduledActivity (note: not a Psc::ScheduledActivity) into
it.

I suppose this could be adjusted, but that's a task for a different
commit.
Event.with_psc_data.  #4085.
Cache scheduled activities for events.  #4085.

Also freeze scheduled activity collections because they've got a much
wider scope now.