Use a zipper-like proof state

Proof state now contains the term in focus, its environment, and a path
through the complete term to reach that sub-term. As a result, large
proof terms are now checked more quickly

Cleaned up a couple of other things on the way...
Merge branch 'master' of github.com:idris-lang/Idris-dev