Return a Match instead of a MatchState from matching algos

MatchState should be an internal detail of the matching algos.  the
MATCH structures encapsulate a finished match result (and the mk
functions enforce correctness).