Added a unit test to catch a bug in Boogie where a NAryExpr.ShallowType
fails when the Function is a FunctionCall
Fix bug in FunctionCall that caused the ExprTypeChecking.FunctionCall()
unit test to fail.

The issue was that one of FunctionCall constructors created a new IdentifierExpr
without associating a type with it. To fix this we now set the type of
the IdentifierExpr to the return type of the Function passed into the
constructor.