Adding a few utility functions

Adding more utility functions and using them.
Adding Button Analog and Tracking

Adding VRPN like devices and filling mouse events into relevant variables
Adding NavigationInfo slot
WIP: this is work in progress
Adding 2d mouse navigation.

The mouse navigation is handled by 2d-mouse class in device.lisp. All
devices should return a transformation matrix. The entire mechanism and
state is internal to the class. All other devices (be it multitouch etc)
should have this type of interface henceforth.

The translation functionality is not complete. We only have a working
rotation implementation. We need to implement pan and zoom as well.
Cleanup...

Cleaning up stuff here and there.
Adding NavigationInfo + using mouse-rotation

The NavigationInfo down nothing so far. However some how this has to be
lined with the navigaiton using 2d mouse. We are putting this together
cause conceptually they belong together.
Changing View transform.

This too has to be in sync with the NavigationInfo. However this should
do for now.
Bugfix. let should be let*

mat is required to compute -mat.
More utilities.

Adding a few more utilities into our toolset + deleting trailing
whitespaces and a few optimizations.
Automatic rendering of scene.

The scene when processed is now automatically rendered. We simply moved
rendering into the constructor's after method. Also the mouse device is
reset when a scene in instantiated.
Merge branch 'NavigationInfo'