Rethink custom request context initialization

pylint complains even if checking callable(), so re-design the whole
thing to be more flexible, using an initializer method rather than
a type property which pylint can only detect as not-callable.