vector: Re-implement match expression
The previous implementation parsed match labels as expressions, but according to the MapLibre spec, a label must be a literal or an array of literals.
The new implementation correctly implements the spec by accepting array literals. Also, since it only accepts literals, it uses a hash table of labels to output expressions, instead of iterating and evaluating all the labels.