Fix bug in 'forget' for well-typed terms

Meant that sometimes if names were shadowed, the wrong ones were picked
up when rechecking, so a term which should have been well-typed was not.

Fixes #714
A simpler approach to handling name shadowing

It's hard to get right, so there's no need to be clever (indeed there's
a need not to be clever). So just before elaboration (while adding
implicits and resolving global names) we traverse a term and rename any
binder which has already been used, inventing a unique name which is not
used anywhere else in the term.
Merge branch 'master' of github.com:idris-lang/Idris-dev