Lensify TCState.

Doing this now because I want to split TCState without committing on the
exact structure forever.  Specifically, I've split the state in what is
used up to scope checking and what is used after -- we need this to
implement incremental type checking nicely.

We should probably lensify stPermanentState as well, and kill state
modifying functions (since they're now useless), of which the code base
is generously peppered, but I figured it's better to have a "compact"
diff for now.
Merge branch 'maint-2.4.2'

Conflicts:
	src/full/Agda/TypeChecking/Monad/Constraints.hs
[ fix ] added missing constructorForm in LHS.Unify
[ sharing ] resurrected pointer term representation

Type checking times are more or less the same,
slightly slower type checking (of std lib), but faster
serialisation.

Big win is actual call-by-need compile-time evaluation.
[ sharing ] updated error messages and interaction output

Things get more evaluated now, since evaluation gets shared.
[ sharing ] added more missing ignoreSharing
[ sharing ] updated error messages again
[ sharing ] enable forcing pointer equality for terms that compare equal
[ sharing ] debug printing of the entire signature