Add full schema validation for configuration data

This patch uses jsonschema to validate the configuration data. By
preprocessing the configuration data using a structural analysis,
common issues such as type definitions and key presence can be checked
against a definitive reference with intelligent error messages.