WIP: First cut at input validation for Kubelet

* Add some util functions for basic validation
* Spec api fields more tightly
* Break a dep from util -> api, so I can do the reverse
* Add functions to validate structures
* Call those functions when running manifests

This does not validate as it unmarshals YAML or JSON because I want to be able
to validate structures that come from other inputs without forcing them to be
YAML.

This does not handle all api structures - I am not familiar wnough with the
rest to spec them this tightly - I hope someone else can do that.

There are a number of open questions, marked "FIXME".  Please offer feedback
or opinions.
In the mean time, I'm fixing the guestbook examples to have version and ID.


On Sun, Jun 29, 2014 at 2:49 PM, Daniel Smith <notifications@github.com>
wrote:

> In api/examples/pod-list.json:
>
> > @@ -8,6 +8,8 @@
> >              },
> >              "desiredState": {
> >                "manifest": {
> > +                "version": "v1beta1",
> > +                "id": "my-pod-1",
>
> This is not the error I expected and I doubt it's something you caused.
> json is mad about the map[interface{}]interface{}, not sure how yaml
> decided it should be there. I'll try to get a fix out there for you.
>
> --
> Reply to this email directly or view it on GitHub
> <https://github.com/GoogleCloudPlatform/kubernetes/pull/280/files#r14331898>
> .
>