Add support for "kiosk_*", "version" and "webview" manifest keys.
Implement "locale" and "requirements" rules.
Implement socket_host_pattern validator.
Minor code cleanup.
Minor code cleanup.
Add more tests.
Fix typo.
Code cleanup, comments.
Typo.
Simplify SocketHostPatternValueValidator implementation.
Add support for "usbDevices" validation.
Rename factory to rootFactory.
Implement mandatory properties for objects.

* A property name with a "!" suffix is mandatory, in that it must be present in it's containing object. If a mandatory name is omitted from an object, a validation error is emitted.

* Also simplify validation of the "usbDevices" permission: we define a custom schema and re-use a regular json schema validator.
Implement "meta-close-ended" modifier for object definition

* When close-ended is set to true, arbitrary property names are not allowed and imply a validation error.
Make "name" and "version" manifest keys mandatory.
Comments.
Minor cleanup.
Minor code cleanup.

* Rename "meta-close-ended" to "meta-open-ended"
Address code review feedback + weakens "locale" validation.
Merge pull request #3308 from rpaquay/more-app-manifest-validator-rules-2

More app manifest validatation rules