New validator

This still needs some comments and tests but the basic structure is there. Tear it up.
Do you want to disable it for now just to avoid risk? Does validation reject partially valid configs so more configs would begin to fail? If the former we can leave it off for now and make it default later, if the latter the default should be warnings and an explicit validate would be a '-Werror'