Created all graphics item subclasses for canvas

All needed graphics item classes have been created, and contain only a
docstring
Added canvas model classes
Created all graphics item subclasses for canvas

All needed graphics item classes have been created, and contain only a
docstring
Updated commit node graphics item

GCommitNode now displays as a rectangle that can be dragged and selected
Create graphical node for gcommitnode

Create a rectangular graphics item to represent a commit.
It can be dragged around, and changes color on selection
Fixed spelling errors
Implement conversion from commit to commit node

Create function to recursively parse a commit tree and convert it into
a commit node tree of the same structure. This newly created tree can
then be fed to a tree drawing algorithm to measure the position of its
nodes, then rendered to the canvas. Not tested
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
Fix commit node rendering

Add test Commit tree to test canvas rendering with narrow tree
rendering algorithm. Change map() to for loop in render_nodes()
Rendering of nodes successful
Implement arrow drawing on canvas

Add arrow head onto lines connecting commit nodes, using line
angle to determine correct polygon to render.
Redraw scene when nodes are moved

Schedule a repaint of the scene when any node is moved.
The results is that all arrows are updated to point to
the newly moved node.
Implement all ConnectionLine attachment modes

Implement all attachment modes for connection lines and apply them
to commit nodes, so that destination nodes attach smoothly and origin
nodes snap to the center of each face
Clean up code and comments

* Optimize and organize imports
* Fix typos in comments and code
* Prefix non-public members with underscores
* Improve comment quality
* Ensure proper use of whitespace
* Run lint and fix fixable issues