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.
To be clear, I meant when combining these Requirements so having "in(a, [b, c]),d,not_in(e, [f, g]". In this context having commas both between values and between requirements would make parsing bit more difficult than just splitting. Though I suppose using a regex would work. I prefer "in(a, [b, c])" over "x in (y, z)" I think programmers would be wary of the white space surrounding "in" and "not in" in a non-interpreted/compiled environment where they wouldn't get immediate feedback - from an IDE for example -  that their syntax was wrong.