Fix performance regression

Remove course_from_id
don't fetch whole course when the root will do
don't fetch even the root if the id will do

@chrisndodge @dianakhuang @sarina @nasthagiri some subset of you, please review

@dmitchell suggested that we just ignore ItemNotFoundErrors, since that error would indicate that the user has access to a course which doesn't exist—e.g. we may as well just pretend that course doesn't exist, and probably don't need to raise the exception.

For other strange cases we raise the AccessListFallback (as with the org-based role thing)