state-based parser for multi-valued set selector syntax

Continuation of the work done [here](https://github.com/GoogleCloudPlatform/kubernetes/pull/951). Whereas previous work expanded the struct and went from object to string, this goes from string to object.
Please also add an indexing TODO:
```
// TODO: Support forward and reverse indexing (#1183, #1348). Eliminate uses of Selector.RequiresExactMatch.
```