add typeOf for NTuples; make NTuple covariant

This pull request will enable defining functions taking NTuples.
This is unpleasant but will be hugely nicer with quasiquotes, so I think we can wait.