[APPS] Validate requirements

:koala::+1:

This PR adds validations to the requirements.json, to ensure that only valid types can be used (as defined in the constant) as well as that you can't define duplicate keys, which cause problems when parsing the JSON (keys are merged together and the user could see weird/unexpected behaviour).

/cc @zendesk/quokka