RFC: Allow tuples as type parameters.

I decided to try and hack #5102 myself; this is what I came up with. Everything seems to work fine; all the tests pass and I added a quick one for this. I am not at all familiar with the internals so its entirely probable that I missed something, @JeffBezanson should certainly take a look. Also let me know if my style is out of line.

NB: since I made `valid_type_param` recursive, things like `(1,(2,3))` become valid type params. If we only want flat tuples I can change this.