insertEffects: some work on 2nd version
insertEffects: more work
insertEffects: minor fixes to allow compilation
insertEffects: small fixes
insertEffects: cache non-destructive mapEff/Sym instances for correct sharing

We had correctness issues due to the fact that each mapEff/Sym was
generating new symbols/effects. Now, a stack of caches is used to make
sure that for each map instance, we repeat all modifications to the same
symbol/effect ids. This is only relevant for non-destructive updates to
the tree which duplicate symbols/effects ie. lambda applications and
collection self substitution.

BTW, in order to apply lambdas throughout the AST correctly, we have to
cache those applications as well and replay them from cache as we go up
the tree. This is currently not implemented since we don't apply lambdas
globally anymore anyway, except for debugging.
Remove unnecessary imports.
Fix NRVO-Move optimization.
Fix writeback optimization.
More NRVO-Move fixes.
Fix LambdaForm Optimization.
Fix purity analysis.
Merge branch 'effects2'

Conflicts:
	src/Language/K3/Analysis/Effects/Core.hs
	src/Language/K3/Analysis/Effects/InsertEffects.hs
	src/Language/K3/Analysis/Effects/Purity.hs
insertEffects: add tracing and fix global handling in createclosure
insertEffects: typo
insertEffects: fix for closure calculation

The new fscope effects (copy and writeback) were not being handled
correctly.
effects: Updated core data structure

NOTE: this commit does not compile!
Fixing type signatures for effects methods
Adding parser keywords for effects signatures
Initial set of materialization-aware effect queries.
Added return signatures to the parser.