Make use Data-Context-Interaction pattern.

Modified to make context execution chainable, and
add meta definition of `have_*' methods, so that
context execution may return desired property
instead of returning `self' for chained call.

Role functionality hasn't been defined yet,
so currently subject and object were both indistinguishable.