Enable hierarchical translation documents

This change set enables the user to provide and use an alternative, hierarchical structure for their translation documents.

The translation document is still JSON formatted, but terms can now be nested to create a document that has more structure.

This also allows to give labels to translation terms instead of the plain a → b translation used previously.

Terms in the translation document can be look up using "object notation". For example: `__("greeting.formal")` would look up the matching term from a document like this one:

    {
      "greeting": {
        "formal": "Hello"
      }
    }

For further documentation and examples, please see the `README`.