caching: initial implementation
caching: invalidate when pragmas change
caching: invalidate when sections change
caching: move support code to its own module
caching: better names for functions
caching: write the log even when an exception is thrown
caching: move pragma check after scope checking
Merge branch 'master' into caching, and refactor caching.

Conflicts:
	src/full/Agda/Interaction/CommandLine/CommandLine.hs
	src/full/Agda/Interaction/Imports.hs
	src/full/Agda/TypeChecking/Monad/Base.hs
caching: cache only during an "Interaction"
caching: cosmetics
caching: use finally_ to not reset the state
[ 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
[ sharing ] check pointer equality before syntactic equality
[ sharing ] disable making equal terms pointer equal

I'm not sure we can trust it to not create loops.
[ sharing ] more normalisation in error message