Currently, the require function only checks for the existence of the key
in the env dictionary, not the value. This change modifies that behavior
by checking the value of non-primitive types. That is, if a key exists
but its value is an empty list, dict, set, or tuple the require function
will throw an exception for that key. All other types are handled as
they were previously.