Register tuples when their types are encountered

This allows functions which take tuples as arguments to be generated, as in
testCTuplesAccess.
Add transformers to CNestedCodegen

First step towards being able to do lowerings for, say, Tuples.