Remove duplicates from implicit receiver hierarchy while building tasks.
Rename.

receiverForVariableAsFunctionSecondCall -> explicitSecondReceiver
receiverFromVariable -> calleeExpressionAsReceiver
Refactoring: do not store reference expression in task.

Sometimes there is no reference for the call (like '{ ... } ()').
A fake reference can be created, but the case when an error is reported on it can't be easily supported.

There were two usages of this reference: tracing and receiver for invoke.
Tracing strategy is created beforehand. Receiver for invoke uses the callee expression (from variable call), not the reference.
Report resolve call errors on JetExpression, not on JetReferenceExpression.
Resolve invoke on any kind of expressions, not only on simple name expressions.
Merged INVOKE and INVOKE_ON_EXPR call types.
Added tests for invoke on expressions.

 #KT-2728 Fixed
 #KT-3217 Fixed
 #KT-3450 Fixed
 #KT-3631 Fixed
 #KT-3772 Fixed
 #KT-3821 Fixed
 #KT-3822 Fixed
Added 'call' reference to ResolvedCall.
Supported invoke on expressions on js backend.