Attaches a contextual value to this instance and returns the value.
The type of T is the signature/key, attaching more than one thing of
the same will only store the last one.
Detaches a contextual value from this instance and returns it, or null if
it didn't exist. The type of T is the signature/key of what will be
removed if it exists. This won't throw if the value was NOT previously
attached.
Gets a contextual value from this instance.
The type of T is the signature/key of what will be returned if it exists.
If the value doesn't exist, it invoke the handler for a return value,
if one was provided, or throws a BadContextError.