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