Add support for moduleName callbacks

For example,

moduleName: function(defaultName, file) {
  return 'foo/' + name;
}

The callback takes two arguments, the default module name and the source
file object. The default module name is file.relative. Anonymous modules
can be configured via the opts.anonymous option.