Added mouse functionality

Added mouse functionality and also completely reworked GUI rendering.
Repaints are now handled more appropriately with a timer and the path
calculations have been expanded to allow for one step to be taken in the
calculation per method call.