Save both a full graph and trimmed graph when hitting a fatal circular dependency error.

The circular dependency may be discovered early in processing a large graph, so dumping the whole thing may not be useful in this case. We can trim the graph down to just the circular part by removing all nodes that either have no incoming links or no outgoing links, and then save the result. This should make the circular dependency more obvious to the user.
Make 'tup graph' behave similarly to the updater graph.

Perhaps this function should be made common somewhere...
Share graphing code among 'tup graph' and dump_graph().
Save graphs if we find a circular dependency during graph building.
Support 'tup varsed' on Windows.

This involves passing down the full path to the vardict file in the dll injection code, and making an mmap() compatible function using CreateFileMapping() / MapViewOfFile().