feat($compile): support DOM nodes as template values

Special content types, such as SVG content or table content, can not be used in many cases due to generating a document fragment which does not support the particular template content type being used.

This patch enables special content such as SVG or table content to be used by making the template a DOM node or collection of DOM nodes, rather than  strings.

The test demonstrates how this can be used to replace the directive node with SVG elements, or similar.

This could be considered an alternative solution to #5235, #2848, #1459, #3647, #3241 and others, with the benefit that it's less work to implement in the compiler, but slightly more work for the user, and doesn't support templateUrl templates.