Refactor syntax using specialized Unapply classes.

Dedicated to @milessabin, for all his time dedicated on kindely shaping types for the rest of us.