Overall, nice file.

If you're going to require a subclass, then I suggest not undefining functions in concrete DataHandlers, resulting in code like

if (handler.createThingCallback) {
  handler.createThingCallback(this, g);
}

Just leave the default, empty implementation and require the function to exist:

 handler.createThingCallback(this, g);

Unless there is a real performance problem, that is.