Code refactoring to move functionality from TypeChecker.cpp to ASaPUtil.cpp;
This functionality will also be used by the EffectConstraintGeneration pass.
Removing duplicate code (using factored out implementation).
Adding bug reported by Stephen that I need to fix next
Fixing bug exposed by functorbug.cpp and factoring out some common functionality between TypeChecker.cpp and EffectConstraintGeneration.cpp
Merge branch 'asp' into dev/prolog
And fix broken tests

Conflicts:
	lib/StaticAnalyzer/Checkers/ASaP/ASaPUtil.cpp
	lib/StaticAnalyzer/Checkers/ASaP/ASaPUtil.h
	lib/StaticAnalyzer/Checkers/ASaP/EffectConstraintGeneration.cpp
	lib/StaticAnalyzer/Checkers/SafeParallelismChecker.cpp