functional improve

* use last-modified-time instead of stag
* yield io instead of return io
add base methods
since some mtime restriction, use etag again
add aliyun_oss backend