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.
I think disallowing those chars is too restrictive particularly because I imagine parens are commonly used. @bgrant0607 what do you think about disallowing any of '(),' in keys and values vs adding escaping? What are the cons of adding escaping?