New validator

This still needs some comments and tests but the basic structure is there. Tear it up.
The vast majority of validations will be without error though (assuming the user has a working box). Because the validation is deterministic, the user could go in after the fact and run `coreos-cloudinit --validate` to see what is wrong with their config. The logs will still contain fatal errors (e.g. invalid syntax).