Make all initialization asynchronous

This replaces a bunch of synchronous XHR calls, which are bad practice and are only there because I was lazy and trying to get things up and running.

Rather than using something more heavyweight like Promises, I opted for Mike Bostock's lightweight Queue library: https://github.com/mbostock/queue.

It works but is not yet ready to merge, still need to address some ugly flickering when recompiling/rebuilding (try the effect switcher in the demo to see).

@iwillig  - you'll probably be interested in this. It still feels messy, open to other approaches.

ES5 for the WIN!!! :)