------------------
* FileArtifacts can be directories
* Artifacts now have a `meta` field to which arbitrary JSON-serializable information can be attached
* If an exception is raised during task execution, the stack trace is printed
* pydot is now used for graph generation
* Artifact equality is checked by comparing location and hash