fix(components) $dispose not always called

Let's consider a template like that
```
<template test(data)>
  <#data.ref />
</template>
```

When changing the component template behinf `data.ref` corresponding
`$dispose()` method (if any defined in the controller class) were not
executed.
I think this is not enough as apparently the $dispose method is not called on the template root node (cf. $root.js line 120). So we should keep a reference on the template root node (which is returned when the template function is called) and call $dispose() on this reference. This should both dispose the node chain and the controller.