Major refactor of DDT:

- allow dynamic configuration by defining window.ddt before loading ddt.js
- ensure that configuration is always dynamic
- move all private methods into a private `util` object
- refactor syncing to not require jQuery
- refactor other code to support changes