CYB-215 Engagement index: opt-out students are still visible to everybody

* added several scopes to Activity, and #visible_to filters on Student and Activity
* increased spec coverage on Activity and EngagementIndexController
* some refactoring of the EngagementIndexController to reduce method size (still too big)

[CYB-215](https://jira.ets.berkeley.edu/jira/browse/CYB-215)