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.
a) A req is empty if it would match any Labels set; it's false if there is a Labels set that would not match it
b) This brings up a more general flaw: The Requirement's String() method outputs the same result for (1) a value set with the empty string as its sole value and (2) a value set of zero length. To fix this, I think that if the Requirement's operator is IN or NOT_IN, it is invalid for the Requirement to have a zero-length value set. The original intent of this method was to say that "a key not being in the empty set" would match any Labels set. But after disallowing zero-length value sets and allowing empty string as a value, this method would probably just be "return false;" since no case (EXISTS, NOT_IN, IN) could be "empty". 

But the reason Empty was implemented at all for Requirement and LabelSelector was to maintain its compliance with the Selector interface. (Throughout the addition of string form changes, Empty() and RequiresExactMatch() were added.) RequiresExactMatch is not implemented here (due to incongruity with multi-valued set) so Empty does not complete Selector compliance anyway. Therefore, in summary I think these 2 fixes should be made:
i. make it invalid for the Requirement to have a zero-length value set
ii. remove Requirement's and LabelSelector's Empty() methods