Flesh out GCommitNode and implement rendering

Add needed attributes to GCommitNode and clean up its code.
Implement 3 phase rendering in canvas: convert to nodes,
measure position, and draw