Created an EditEngine class for abstraction.

Abstracted a lot of the LineCurveTool code to a new EditEngine class for
later usage with other tools that will be made editable.