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

If you think this won't be a be issue - a source of false positives in the future - then looks good as is. Otherwise, perhaps we should validate the format of the locale, rather then validate against a specific list of locales?