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.
This is somehow valid, but could be done in another PR.

Nevertheless, the `$RootNode.$dispose` method as far as I get it is _only_ called when we don't want to keep `localProperties` on the node itself.

```javascript
/**
 * Default dispose method
 * @param {Boolean} localPropOnly if true only local properties will be deleted (optional)
 *        must be used when a new instance is created to adapt to a path change
 */
$dispose:function(localPropOnly) {
    this.cleanObjectProperties(localPropOnly);
},

/**
 * Removes object properties - helper for $dispose methods
 * @param {Boolean} localPropOnly if true only local properties will be deleted (optional)
 *        must be used when a new instance is created to adapt to a path change
 */
cleanObjectProperties : function (localPropOnly) {
    this.removePathObservers();
    if (this._scopeChgeCb) {
        json.unobserve(this.vscope, this._scopeChgeCb);
        this._scopeChgeCb = null;
    }
    if (localPropOnly!==true) {
        $RootNode.$dispose.call(this);
    }
    this.exps = null;
    this.controller = null;
    this.ctlAttributes = null;
    this.template = null;
    if (this.node1) {
        this.node1=null;
        this.node2=null;
    }
}
```