Add ability to collect App1's into a Type constructor

Useful for determining if something is a Tuple or List
Make comparable work fully and clean up code
Make error messages nicer