Use Type::Tiny for types
Use private writer for "rwp" attributes

Also added a predicate to context to be able to
do 'has_context'.