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
i've noticed you doing this for checks on various spots.. not that it is incorrect but the standard way i've seen it used is the reverse order.. same with typeof checks