CallCandidate nodes now generate proper return types.
Added CalcRequiredTypes stage that imposes constraints on types used throughout the code. CallCandidates now properly operate on their arguments.