External graphs

This PR adds support for external graphs. To create one, do:

```
curl \
  -XPOST \
  -H 'content-type: application/json' \
  /api/projects/<project-id>/graphs \
  -d '{
    "properties":{
      "storage.backend":"local",
      "storage.directory": "/tmp/foo"
    }
  }'
```

It also does some minor cleanup, like fixing a race on opening graphs, corrects a typo in our example graph creation script, and finally allows `dendrite run-groovy` to print out the result of the script.