Add Browser Support

Allow for use in both the browser and node.js (including compatibility with AMD loaders and older browsers). This requires the use of polyfills for `Array#reduce`, `process.nextTick` and `Array#indexOf` for compatibility back to Internet Explorer 6.