[BUG] multiple calls to setModuleDefaults apply in the incorrect order

Because of the way we do the merge as a cumulative affair, a person might expect setModuleDefaults to treat these two as somewhat equivalent:

  Config.util.setModuleDefaults("a.b", settings1);
  Config.util.setModuleDefaults("a.b", settings2);

  // Expected behavior:

  let defaults = Config.util.extendDeep(settings1, settings2, Config.get("a.b"));

But because of the way the merges are handled, this is what you actually get:

    let defaults = Config.util.extendDeep(settings2, settings1, Config.get("a.b"));

I don't see a particularly good way to solve this, short of fixing the diffDeep function and yuck. So maybe that does recommend the solution in #670 of simply denying duplicate calls.

See also #226