code: function(path, value){
      if(path != null){
        var type = typeof (path);
        if( type === 'string' || path.type === 'expression' ){
          path = this.$expression(path);
          path.set(this, value);
        }else if(type === 'function'){
          path.call(this, this.data);
        }else{
          for(var i in path) {
            this.$set(i, path[i])
          }
        }
      }
    }
docs: **tips**: whatever param you passed in $update, after the function called, dirty-check(digest) phase will enter;
  
  @param  {Function|String|Expression} path
  @param  {Whatever} value optional, when path is Function, the value is ignored
  @return {this}     this