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.
Oops. I made the key validation comment in the wrong place.

But, I was also thinking about what value validation we should do. We're not currently restricting the characters allowed much, but maybe it would be worth checking for duplicate values. Just put a TODO here for now.