Pull the CollaboratorCache out to a separate Actor

This permits better separation of concerns, and helps avoid the
UserSession getting too bogged-down.