Format addresses based on their admin0

decoupling outputGenerator and outputSchema - making output schema customizable per country/admin0. Adding tests that checks for valid json object with valid keys and arrays etc.

[Discussion] Ideally, we should move outputSchema.js to its own repo to get people to add their country's preferred address formats? 

[Discussion] We need to validate the admin0 values to match with data (case sensitive?) or should we leave this as a manual step during the PR approval/merge?