improving fix of #2246: optimised isDifferentTy...
improving fix of #2246: optimised isDifferentTy...

improving fix of #2246: optimised isDifferentTypeConstructor

removed typeConstructor(Boolean), using hasDifferentTypeSymbol instead

switched to new subtyping algorithm (isSubType2)

substitution now uses appliedType
appliedType ensures Any/Nothing never have type args (so don't need to shortcut isSubArgs in firstTry when sym == AnyClass)

appliedType ignores TypeVar's for now (must deal with them, since they
arise during substitution) when tcpoly infer is integrated, TypeVar's
also have type arguments and this case in appliedType must be updated

maybe appliedType should become a member of Type (and rename to
applyTypeArgs?)


felixmulder/scala,lrytz/scala,scala/scala,lrytz/scala,martijnhoekstra/scala,felixmulder/scala,felixmulder/scala,martijnhoekstra/scala,felixmulder/scala,martijnhoekstra/scala,martijnhoekstra/scala,scala/scala,felixmulder/scala,slothspot/scala,scala/scala,slothspot/scala,jvican/scala,scala/scala,jvican/scala,slothspot/scala,jvican/scala,shimib/scala,shimib/scala,martijnhoekstra/scala,lrytz/scala,scala/scala,martijnhoekstra/scala,lrytz/scala,jvican/scala,shimib/scala,shimib/scala,jvican/scala,slothspot/scala,scala/scala,felixmulder/scala,lrytz/scala,slothspot/scala,shimib/scala,jvican/scala,lrytz/scala,slothspot/scala,shimib/scala,jvican/scala,felixmulder/scala,slothspot/scala