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.
I can't resist making one last comment.

I was hoping to keep this data in sync with the link given in the comment. Here you're answering your own question in #245, though I think there's another incompatibility, too. There was discussion internally about bumping our published manifest format version to v1beta2 due to this incompatibility. Maybe time to do that in this code?