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.

It includes JS functions that aren't true JSON :)

That said, I think all functions may be separately stringified/eval'ed in a different process now, because the need later arose to pass them to the web worker (which you can't pass functions to).