Remove 'first_click' flag.

Set the initial mouse position in glutMouseFunc - GLUT_DOWN.
Separate transformation into T, R, S.

Add transform function to return the correct application of
transformations.
Add an Enum for current mode controlled by keys.

Uses the updated transformation function.