function addPart(locale, master, needed, toLoad, prefix, suffix) {
        if (master[locale]) {
            needed.push(locale);
            if (master[locale] === true || master[locale] === 1) {
                toLoad.push(prefix + locale + '/' + suffix);
            }
        }
    }
This plugin handles i18n! prefixed modules. It does the following:

1) A regular module can have a dependency on an i18n bundle, but the regular
module does not want to specify what locale to load. So it just specifies
the top-level bundle, like "i18n!nls/colors".

This plugin will load the i18n bundle at nls/colors, see that it is a root/master
bundle since it does not have a locale in its name. It will then try to find
the best match locale available in that master bundle, then request all the
locale pieces for that best match locale. For instance, if the locale is "en-us",
then the plugin will ask for the "en-us", "en" and "root" bundles to be loaded
(but only if they are specified on the master bundle).

Once all the bundles for the locale pieces load, then it mixes in all those
locale pieces into each other, then finally sets the context.defined value
for the nls/colors bundle to be that mixed in locale.

2) A regular module specifies a specific locale to load. For instance,
i18n!nls/fr-fr/colors. In this case, the plugin needs to load the master bundle
first, at nls/colors, then figure out what the best match locale is for fr-fr,
since maybe only fr or just root is defined for that locale. Once that best
fit is found, all of its locale pieces need to have their bundles loaded.

Once all the bundles for the locale pieces load, then it mixes in all those
locale pieces into each other, then finally sets the context.defined value
for the nls/fr-fr/colors bundle to be that mixed in locale.