[UP-4276] Async populate portlet cache on login.

Will update @since.  The change to immutable was mostly just because there is currently no need for mutability and a hint that changing to mutable may introduce thread safety issues.   I'll generally prefer immutability when I'm dealing with something that may be accessed by multiple thread.   In fairness, will note that this really isn't all that immutable (the entities themselves are not) but, better than nothing, IMO.