Figure out a decently appropriate way to cache calculated info on the SpaceState

(Missing Feature, Closed -> Fixed, Priority: High, Test Status: No automated tests yet , Reported By Justin du Coeur, )
Summary: There are lots of subsystems that calculate piles of data about the SpaceState. We desperately need a way to cache the results in the State.
A good example here is PersonModule. It should really be computing the list of Members of the Space once, and caching that -- finding whether a requester is a Member requires groveling through the entire State every time, which is idiotically inefficient.
The problem is, of course, that SpaceState really kind of needs to be immutable. Maybe we should do this the other way -- allow Ecots to register for "this Space has loaded", calculate their really commonly-used info, and attach it into the Space? Better yet, if they could also listen to "this Space has changed" events, receiving the old and new states and the change itself, they could decide whether to simply reuse the value from the previous State. Hmm...