Don't substitute recursive binders
Two fixes of liftBinders:

- Include IDs of sibling binders in the type environment
- Check if a binder that was supposed to be substituted moved to
  the remaining binders. This happens when the binder to be
  substituted is self-referencing
Use HashMap.lookupDefault instead of HashMap.!

for better error messages when lookup fails