fix some bugs

1. 类的基类flags为3（重载了writeObject/readObject），也需要执行custom writeObject/readObject
2. SC_BLOCKDATA -> SC_BLOCK_DATA
3. name -> className
4. 增加testcase
我check了下java的源码。它里面确实也没有我加的这个逻辑。java的逻辑就是有writeObject/readObject就调，没有就不调，这个和现在的实现是一样的。

但我个人认为增加这个逻辑有好处，可以给出相对准确的错误提示，减少定位问题的时间，比如：我现在要反序列化PackageProtocol, 但是我没有通过io.addObject添加自定义序列化/反序列化的方法，按照现在的逻辑就该走到this._readNowrclass(obj)这个分支去了，而加上我那个判断，会直接报错throw new Error('Class "'+ classname + '" dose not be added in or not implement readObject()');   提醒我添加writeObject/readObject方法

```
if (flags & cons.SC_WRITE_METHOD) {
      debug('>> _readClassData | production: wrclass objectAnnotation');
      if (hasReadObjectMethod) {
        customObject.readObject(this, obj);
        // TC_ENDBLOCKDATA
        assert.equal(this.in.get(), cons.TC_ENDBLOCKDATA,
          'SC_WRITE_METHOD object should end with TC_ENDBLOCKDATA');
      } else {
        throw new Error('Class "'+ classname + '" dose not be added in or not implement readObject()');
      }
    } else {
      debug('>> _readClassData | production: nowrclass');
      if (hasReadObjectMethod) {
        debug('%s.readObject()', classname);
        customObject.readObject(this, obj);
        // TC_ENDBLOCKDATA
        assert.equal(this.in.get(), cons.TC_ENDBLOCKDATA,
          'SC_WRITE_METHOD object should end with TC_ENDBLOCKDATA');
      } else {
        this._readNowrclass(obj);
      }
    }
```