Issue #10: Validate `inputs`

* Add `inputs` to schema

* Big rework of validation recursion

* Flattened and merged some loops into top level validator

* Support for `additionalProperties` in schema validation

* Change error message for minLength on strings

* Misc refactorings and tests
Oof, yeah, I'd stuck a `util.debug()` to dump out results, but forgot to clean up the extra var too