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)
Use asList() to eagerly walk all repositories
updated isPublicRepository check to cache results
Merge remote-tracking branch 'alex/fewer-github-api-calls-for-performance' into edge