don't record recent activity for unauthorized actions

fixes #CNVS-12934

When attempting to view a course that is
unpublished, or is published but with course start
and end override dates in the future, 
it gives an unauthorized page, 
but the "Last Activity" field in the course 
roster registers your access.  Teachers are 
reading it as students are accessing courses 
when they shouldn't be able to, and 
contacting support.

Also refactors out "recent activity" from
the enrollment model into a class of it's own

this ALSO solves a recurring problem present
on master with the "content_migrations_spec"
which causes a spec group to fail only
when run with other specs, but not when
you run it in isolation, due to the
caching of Account.default.

TEST PLAN:
 - Create a course and edit the start and end 
      dates on it to be in the future and check 
      the box "Users can only participate in the 
      course between these dates"
 - Add a user to the course that already exists 
      on the institution as a student
 - Masquerade as this user and go to the courses 
      homepage URL manually
 - Stop masquerading after you receive the 
      un-authorized page and check the course roster
 - The student you invited should still be pending, 
      and SHOULD NOT have a "Latest Activity" time.

Change-Id: Ifc03e79b2eb2d4933dffb11d167d20734facd490
Reviewed-on: https://gerrit.instructure.com/40855
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Rob Orton <rob@instructure.com>
QA-Review: August Thornton <august@instructure.com>
Product-Review: Ethan Vizitei <evizitei@instructure.com>