Attempts to call a type-appropriate function with the value held in a SumType, and throws on failure.
Matches are chosen using the same rules as match, but are not required to be exhaustive—in other words, a type (or combination of types) is allowed to have no matching handler. If a type without a handler is encountered at runtime, a MatchException is thrown.
Not available when compiled with -betterC.
The actual tryMatch function.