Visitor for type-level variables. Used to visit the variables contained in a value, as seen
from the outside of the value. This means that any variable bound inside the value will be
skipped, and all the seen De Bruijn indices will count from the outside of the value. The
returned value, if any, will be put in place of the variable.