Fix implementation of range() for array references.
Workaround a bug in recent Graphviz versions on OS X by setting penwidth as a
global property rather than on nodes and edges separately.
Use Graphviz by calling the dot executable rather than as a library. This avoids
problems caused by the Graphviz libraries crashing. If dot is not found by the
state graph viewer then a message will be displayed to the user indicating that
Graphviz is required for it to function, and linking to the Graphviz download
page.