A subtitution that can handle intermediate variables.

- CascadeSubst puts 1 substitution on top of another.
- the ideal model is that you'll first pull the instantiation
  off the top and then "return" to the bottom.