Improved mouse interaction logic.

We will no longer mantain separate interaction logic in each of the drawables.
This will get removed soon.

The interaction logic will now be housed in an Interaction class.
This object acts like a state machine where it will transition to
different states depending on the mouse events received from the user.