Add support for web workers.

This adds a transform which converts all `async` functions to delegate the work
to a web worker instead. That is,

async function is_aperiodic(a, b) {
  // implementation
}

becomes

async function gen_is_aperiodic(a, b) {
  return delegateToWorker('is_aperiodic', [a, b]);
}

function is_aperiodic(a, b) {
  // implementation
}

This is quite simple because all the NetworkX code is synchronous
anyways. The client can now decide whether to call the sync function is_aperiodic
or the async function gen_is_aperidoc and receive a Promise instead.

NOTE: Using the worker is only supported for Graphs and DiGraphs for now
and no edge data is transferred.

NOTE 2: The file has to be served as `jsnetworkx.js` or
`jsnetworkx-dev.js`, because that's the name passed to the worker.

NOTE 3: In Node, both methods are supported as well, but both are
executed synchronously (gen_* still returns a Promise though).

---

Further changes:

- dag functions are now async
- source maps are now included in the browser dev build