emit IR for function variable

the function to call is determined on the function being invoked.  so
all function variable invocations must be statically resolved.
this commit includes very ad hoc operation in analyzer.cpp.  the
variable of generic function type which is called should have cloned
type from the global function constant.  this is because the type is
modified by overload resolution in function invocation.  if the type
value is not cloned, the original type value (which is owned by the
global function constant) is also modified and it causes illegal state
in global constants.
allow any_node to contain nullptr