fix #2693, inconsistency in how TypeConstructor-valued arguments get cached

Conflicts:
	src/cgutils.cpp
probably fix #3055
fix #3091
due to an obscure failure of type intersection to match a method

Conflicts:
	base/inference.jl
fix #3123, inference on too many arguments in type application
hopefully fix #2607, inference nesting types forever on DataArray

Conflicts:
	base/inference.jl
fix #2619
it was hard to write a test for this!

Conflicts:
	test/core.jl
port some fixes to 0.1