Review UMD wrapper

Use an anonymous module to make it more portable see #62
based on https://github.com/umdjs/umd/blob/master/returnExports.js

`define` and `module` being used as a global, add consistency by not using `context.define`.