Optimize the number of github api calls for authorization checks

* For a user look up all their user repos & organization repos and cache results.
* When there are a large number of jobs/repositories, this is much more performant than asking each repository for its list of members
  which is what it was previously doing.
* There was also a bug with caching if the first person to ask about a private repository had no access (it incorrectly cached [] as the list of members)