Add Type() method on flags for compat with pflag library

Allows our flag objects to be used with both golang flags and pflags
test-cmd should test all api versions
Prevent infinite loop in apiserver errorJSON
RESTMapper should take into account multiple versions

When a CLI command `kubectl get rc --api-version=v1beta3` is called,
the API resource name should match v1beta3, not whatever the default
RESTMapper version is.  This allows the correct resource name to be
returned ("replicationcontrollers", instead of "replicationControllers").
Add a side-by-side diff option for verbose output

Make regular diff better by eliding pointer values
Rename ServerOp to Operation in v1beta3 and internal

Add the appropriate rename logic internally.
PodStatus Message needs to be round-trippable
Status should be a ListMeta, not ObjectMeta internally
Rename Event.Status to Event.Condition to match v1beta3 agreement

Question - should this be a phase?  Seems like no, since phase implies
defined lifecycle and this field is explicitly not defined.
Remove LivenessProbe.Type in v1beta3
Client should use "replicationcontrollers" for v1beta3 resource name
Add PodIP and Image to v1beta3

Fixes #2900
Remove internal PodState in favor of internal PodStatus object
Conversions missing from v1beta1

They were in v1beta2, not sure how they got removed.
Use preferred resource version
Allow the api-version on the command to override the client builder
Improve serialization round trip test and add v1beta3
Enable v1beta3 API via --runtime_config=api/v1beta3 flag

This exposes the proper v1beta3 API endpoint when the user specifies
the --runtime_config=api/v1beta3 argument to the apiserver. v1beta3
is still considered experimental and subject to change.

--runtime_config is a map of string keys and values, that can be
specified by providing

    --runtime_config=a=b,b=c,d,e

Only the key must be specified, the value can be omitted.

Enables v1beta3 in hack/local-up-cluster.sh and hack/test-cmd.sh