Add support for namespaces when doing text extractions.

The namespace separator can be specified in the task options (defaults to '.')

If an extracted message has a prepended namespace it is used as the key in the final translations map. If there's no key detected then 'messages' is used as a default key.

Each key in the translations map represents a namespace and is output as a single file containing the message Ids etc.

The same namespace can be used in multiple source files and the usages will be merged in to a single output file per namespace.
Add Angular extractor.