Yes, this is a big improvement.  I still think we need to do some more work (not necessarily in this branch) to get back to where we were, because I *think* that for any user other than anonymous, this will recalculated with each request (even, for example, CSS requests).  There used to be some sophistication in the user caching that I fear we've lost.  It would cache the @all_roles array and clear the object when roles were edited.

To be sure, this is the most important improvement, and the others may be best tackled with events.  I will ticket.