implement match_on_type from Moose::Util::TypeConstraints, and also compile_match_on_type which is much faster