Fixed bug: using edit tool, when selecting a model and then afterwards
clicking on the top level canvas, an exception is thrown.

The issue was concerned with introducing the undo/redo infrastructure
where the transaction was committed in this case without being begun. An
extra check was added to make sure a model is actually was pressed on.

Changed the usage of tools. Before, all the tools were instantiated for
each usage. Now, all the tools are instantiated during application
startup instead and, thus, there is support for holding member variables
onto each tool.

Signed-off-by: Jakob Brandsborg Ehmsen <jakobehmsen.github@gmail.com>