Implemented all cases for shrink.  Arbitrary instances are still incomplete, however,
and the current implementation of shrink may result in orphaned bound variables.

Also, Prod and Sum type may need some revision.  It is probably a better idea to
bind to a pattern like RefineType and CompType do, and it may also be a better idea
*not* to store fields/args in a map necessarily.