Make ResourceVersion internally a string instead of uint64

In v1beta3 we decided to make the public, external ResourceVersion an opaque string so that we can eventually support other stores.  This change in preparation for v1beta3 rewires the internal version
to string, but leaves v1beta1/2 as uint64.

As a consequence of this change, clients must treat tokens as opaque and pass them back to the watch interface unchanged.  Therefore the watch interface must start watching at "resourceVersion" + 1. This
simplifies client behavior.

Extracted from #1600
The client really just treats it as opaque, and a new client gets a number and converts to string, and the old client still gets a number.  ResourceVersioners right now deal with internal always, although in a few cases we might want to have them deal with both.  Just judging by the change I *think* we can leave old clients as they are without breakage, just because everything internal can handle it (it's a wider subset)