begin implementing state machine

This branch aims to restructure the way that the `arrow-tool` works.

The arrow-tool previously handled all the selection and the moving of all visual elements.

---

Selecting vector graphics is very interaction intensive. You can select a line itsself or you can select the points which make up the line, once selected a new set of possible interactions arise. With moving or removing points or resize/moving/rotating graphic elements. All of this is complicated and nuanced.

Encapsulating these actions into sub-tools is essential but not sufficient to encapsulate all interactions.

After much thought I decided to create a `state machine` that is itself a tool. That state machine became `TooledStateMachine`