Adding check to avoid visiting function body multiple times when there are multiple declarations.
Also moved visitor template from main file to more appropriate ASaPGenericStmtVisitor.h
Better printing of VarEffectSummary objects
Removing field that existed in base class and fixed debug output
Fixing how declaration IDs (for Prolog) are instantiated in Symbol Table for functions which can be declared multiple times (but defined once).
Also minor code massaging in TypeChecker.cpp
Avoiding to emit duplicate facts to prolog caused by redeclarations of functions.
Adding Substitution Sets for classes and functions with multiple params, and refactoring substitution vectors to contain Substitution Sets. Also, refactored EffectConstraintGeneration and fixed some bugs that had not yet been uncovered. More fixes needed though.

Substitution sets are not yet properly asserted to Prolog, nor implemented therein.
Adding 'take' capability for merging without copying two OwningPtrSets.
Adding merge_back capability to SubstitutionVector allowing to merge a SubstitutionSet with the last one in the vector
Minor bug fix in merge_back.
Moving and improving functionality getSubstitutionVector from ASaPType to ASaPSymbolTable.
We need separate functionality for building the Inheritance Substitution Vector, the Type Substitution Set, and the Full Substitution Vector which contains both aforementioned Substitutions
Correctly computing SubstitutionSet for computing the effects of invocations and some code maintenance.
Adding functionality to emit substitution sets to prolog.
Removing printf-debugging
Modifying getPLTerm() to omit empty SubstitutionSets in the vector (to simplify prolog logic).
Renaming functionality, fixing a bug for emitting RplDomains, and for linking the
effect inclusion constraint to the VarEffectSummary both in the definition and in the canonical declaration.