Experiments with loop detection
More fiddling with trace heuristics
specialize up to size 10 (inclusive)
reconstruct the call graph while executing

base the should_enter markers on the call graph, only mark lambdas as
should_enter that actually close a loop in the call graph.
use the callgraph construction to mark the downrecursion

whenever an application is marked as a potential downrecursion, the
continuation is inspected. if the next to-be-executed ast comes from the
same function, the call is non-tail-recursive. Then that AST from the
continuation is marked as should_enter.
Cleanup
remove the mark_non_loop hack, no longer needed
have a we_are_jitted guard around the whole expression
Useless check
Merge branch 'master' into reconstruct-callgraph

Conflicts:
	pycket/base.py
Merge branch 'master' into loop-detection
Merge branch 'master' into loop-detection
Merge branch 'loop-detection' into loop-and-callgraph

Conflicts:
	pycket/interpreter.py
Remove redundant annotations
Merge branch 'master' into loop-detection
Merge branch 'loop-detection' into loop-and-callgraph
Merge branch 'master' into loop-detection
Merge branch 'loop-detection' into loop-and-callgraph
Merge branch 'master' into loop-detection
Merge branch 'loop-detection' into loop-and-callgraph