More app manifest validatation rules

* Add validation rules for the following manifest keys: default_locale, current_locale, kiosk_enabled, kiosk_only, minimum_chrome_version, requirements, version, webview
* Add validation for "socket_host_pattern"
* Minor code refactorings
* Support for mandatory properties and "open-ended" objects in json schema definition
* Lots of tests

@devoncarew

I think I would prefer if, else, else rather than two early returns. Not critical.