Support type inferece on generic method calls across argument types and return type as the LUB of the inferred type at each argument position.
Merge remote-tracking branch 'origin/spec' into spec