make the storing of context private

this change makes it so that only the context containing the role player may set the role players context.

previously, an object could use store_context and set an arbitrary object as a context. this change requires
that a block be passed to the role player when storing the context. the block binding is evaluated by the
role player to determine if the caller is a valid context.