This commit introduces a Credentials object and a RoleCache object whose purpose
is to cache permission-related queries in memory rather than executing loads of
mongodb round-trips. Basically, any time you need to touch a ProjectRole, you
should check to see if the Credentials object can be used to satisfy your query instead.