Issue127: Introduce MetadataExtractor

Extracts metadata according to a json configuration from a componentTree
If you have a look at the template class constructor, you'll see that we use `name` as identifier of a template. So to name it `templateName` is a better choice. IMO a `templateField` is a `directive`. So please name it `directiveName`.
Just to be consistent.