List 定义数组类型，非常适合于定义 Modal 后，使用`assign`方法一次性赋值
@typedef List
@public
@param init {any[]}
@param Type {Function}
@param options {object}
@constructor
@example

class Model extends Root {
\@observable a = 'xyz'
\@observable b = 'abc'
}

const list = List.create([{ a: 'xbb' }, { b: 'hhh' }], Model)

list[0] instanceof Model === true
list[1] instanceof Model === true

list.assign([{ a: 'xxx' }])
list[0] instanceof Model === true
list.length === 1
function List(init = [], Type, options = {}) {
  classCallCheck(this, List)
  const arr = observable.array([], options)
  ObservableArray.apply(this, [[], arr.$mobx.enhancer])

  addHideProps(this, '_Type', Type)
  this.assign(init)
}