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

Also, a style nit above, the `else if` should be on the same line as the closing `}`.