demo.js: wrap saveFn and refactor simplify closures.
Import minified d3.js version v3.

From: https://github.com/mbostock/d3
Add non-functional d3 node/paths force layout.

The demo now has three areas:

- Upper left: the force layout visualization of the nodes and links.

- Upper right: the textual raft tasks timeline with the step button.

- Lower section: the raft debug output/messages textarea.
Demo shows server state and RPC links.

- Refactor the demo_render.js to catch node and link updates and not
  just adds and removes. Add and remove RPC links as they come in
  using callbacks from the tasks queue.

- Change Tasks schedule function to accept an opaque data param
  instead of type and desc. Various calls to schedule put relevant
  attributes in the data map. For example, for RPC calls the src, dst
  type, and rpc (name) attributes are set accordingly which allows the
  links to be created based on the RPC type (RPC or RPC_Response).

- Rename demo.js to test_tasks.js since this is really parallel to the
  other test_* files (it's the taskified version). Move out any web
  related stuff to demo_render.js including message logging (using
  generic callback), step button, updating the task list, etc.

- Start with commitIndex as -1 rather than 0 since index 0 isn't
  actually committed at that point and this get the node rendering to
  show the correct commit count versus log count.