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

This table will be something that we'll have to update as new locales become valid, right? If we forget or don't update the table, then we will start warning about valid locales. Don't sure what the best solution is.