[DON'T MERGE] perty.next

Needs squashing
:) Yeah I know. I was sad when I had to write this. So the scoop with TypeTags is that they help us with erasure when usings Maps, Seqs and the like but they suck for Products because the TT of a Product doesn't give you a TT for the components. Which means we're almost back to square one.  I still think overall this is slightly better than just using pattern matching. If it bugs us, we can do on more round of perty refactoring and replace reflection with plain pattern matching again as that is orthogonal to avoiding the stack build up (which is the main point of this PR).