A hook that can be defined in each module to project constraints on
newly introduced variables back to the query variables.
QueryVars is the list of variables occurring in the query and
ResidualVars is a list of variables that have attributes
attached. There may be variables that occur in both lists. If possible, project_attributes/2
should change the attributes so that all constraints are expressed as
residual goals that refer only to
QueryVars, while other variables are existentially