完成 es6-promise 功能，文档后续补上

cast实现确实不确定，所以，要么这个接口先不提供了？
另外，这里用 object.constructor == this去判断也是有问题的，因为 eoo 会改写掉 constructor，肯定和 Promise 不一样；

all 和 race 确实应该将传入的数组都通过 cast，但这两个函数目前的实现方案，与通过 cast 来包装一个标准的 Promise 的实现方案是等价的，而且性能会稍微好些，毕竟只经过一个循环