use TypeCheckingProcedure for generating constraints
 (in ConstraintSystemImpl)
reverted: adopt to broken inference
complete type inference(*) for variable as function call as well

* dependent on expected type
+ get rid of instanceof ResolvedCallImpl check
fixed test data

type mismatch with nothing (after change in ConstraintSystemImpl)
render 'CANT_INFER' type as '???'
rename
invoke equalsOrContainsAsArgument
 instead of dependsOnTypeConstructors
refactoring

unite two similar methods (replaceTypeVariables, copy)
store constraint system without expected type constraint

for easier 'type inference expected type mismatch' reporting
added @NotNull annotations