Expose module through the UMD format

This change allows this module to be consumed by a variety of different
module loaders. If either Node or Component are the environment its
running in, it will expose itself via `module.exports`. If an AMD loader
is present, it will expose itself as an AMD module. In the event that no
such system is present, it will simply expose a global called
randomColor (the same as it used to always do).
Optimize factory function

With this change, `randomColor` no longer redefines all of its helper
functions each time it runs.
Add support for commonjs 1.1.1

Prior to this, the module would only work with environments that
supported letting module.exports be set to a function.
Optimize colorDictionary to only be built once
Merge pull request #6 from bilalq/umd

Expose module through the UMD format