add string form, extend selector with EXISTS, new tests/some old tests use table-driven style

Based on discussion in https://github.com/GoogleCloudPlatform/kubernetes/pull/715. Some of the old tests were not converted to table-driven format since the code on which they are based will probably be removed in the near term. Future work includes: changing uses of old code in other parts of the code base to use newer version of selector, removing old selector code, removing tests of old selector code, and adding number ranges to selector values.
Because the empty string is a legal value, "x not in ()" would not be the same as "x" and so it should be allowed. On the structured message side, there is also only one way to express existence - using EXISTS. Please correct me if I'm wrong about this. I think the one way of expressing existence makes it much more intuitive. Regarding @thockin's syntax above, how would they be joined together into one string - what should the separator be? I was hoping it wouldn't be commas :)