Check arguments being matched on are matchable

Specifically, matching on a polymorphic argument should not be allowed
unless some other argument has determined its type.
Lift typecase restrictions on %reflection fns.