Remove unneeded forward declaration of graph_canvas struct
Split rendering of changes commit in two

The index is checked in main_open but the lines are added when the first
commit is read. This ensures that the changes commits are only displayed
if git-log finds any commits.
Remove graph canvas member from struct graph

It seems more clean to pass it to those that modify the commit graph
canvas.
Allocate the graph member in the main_state struct