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
This is a habit I've picked up after leaving out an `=` one too many times and accidentally doing an assignment instead of a conditional. (eg. `bar = "foo"` instead of `bar == "foo"`) 

That way if I screw up, `"foo" = bar` is an error right off the bat and JS yells at me. It looks weird though, and I can swap it around if need be