refactor($compile): rename `directive.type` to `directive.templateNamespace`

BREAKING CHANGE: `directive.type` was renamed to `directive.templateNamespace`

The property `type` is was too general.
fix($compile): use the correct namespace for transcluded svg elements

Via transclusion, svg elements can occur outside an `<svg>` container in an 
Angular template but are put into an `<svg>` container through compilation
and linking. 

E.g.
Given that `svg-container` is a transcluding directive with
the followingg template:
```
<svg ng-transclude></svg>
```

The following markup creates a `<circle>` inside of an `<svg>` element
during runtime:
```
<svg-container>
  <circle></circle>
</svg-container>
```

However, this produces non working `<circle>` elements, as svg elements
needs to be created inside of an `<svg>` element.

This change detects for most cases the correct namespace of transcluded content
and recreates that content in the correct `<svg>` container 
when needed during compilation. For special cases it adds an addition argument
to `$transclude` that allows to specify the future parent node of elements
that will be cloned and attached using the `cloneAttachFn`.

Related to #8494