Add UMD wrapper, compatible with AMD & CommonJS
Add spm support