Fix bug that caused labels not to move with their links.
Fix bug that caused newly created nodes and links to be rendered twice.
Start to bring NodeCanvasElement and LinkCanvasElement under test.
Start to extract CanvasElement from LinkCanvasElement and NodeCanvasElement
Continue to extract logic onto CanvasElement.
Finish bringing LinkCavnasElement under test.
Update TODO list.
Move isSource and isTarget onto Link.