Allow client and server to vary the API versions they use

Handles storage version setting on apiserver, and client version
specification.  Uses the appropriate codec for the version specified.

Open problem: needs to merge data when PUT uses an older version

Only the last two commits are new
This is the version we'll write to etcd? This seems like a very important flag. @thockin here is another example of master config we might eventually want to store in etcd.