Better UMD (Universal Module Definition) support

The previous implementation of `UMD` (Universal Module Definition) didn't
work well with such libraries as `AngularJS` which globalizes `module`
variable which is injected with `exports` by another 3rd party library.
That leads to situation when `Faker` doesn't add itself to `window`, but
to that `module.exports` variable which is wrong.

Implementing `UMD` in a common way used by such tools as `browserify`
solves the problem thought it's pretty clear that other libraries should
respect the rules, not only `Faker`.