Adding ability to select different screens

This is a hack at this point. We simply add the ability to configure
multiple screens and start a different screen from each process
BUGFIX: The screen configuration as reversed.

This was discovered when multiple screen's lighting did not match
up. Screens other than the central one had wrong lighting. This was
because the screen normal was in the wrong direction.
Viewpoint matrix calculation

Bringing back the simple viewpoint matrix calculation other than the
navigaiton function. It seems like Viewpoint can be used anywhere in the
scene graph and a better method must be deviced to handle this node.
Defining *Scene* global and VR class

To decouple the scene we are making a variable Scene to hold global
parameter. We also move all the windowing code to VR class.

The VR class contains the scene and device parmeters. However currently
we are leaving the *Scene* as a global variable since the VR class has a
broader role which is not currently defined.
Restructure Scene class.

The scene class role has been chaned. Previously the scene class would
also set up the window and extablish the gl context before
rendering. However this is now changed and the VR class is now
responsible for setting up the window and glcontext. The scene class
simply loads the current processed scene into the *Scene* global variable.
Moving rendering logic.

The VR window takes in the head and the screen to compute the projection
matrix. We were previously computing two matrices namely model-view and
projection seperately. However for the sake of simplicity they can be
seena as one projection matrix.

The scene is thus free to now use the model-view matrix and do things
totally independent of how the configuration is setup in the VR class.
Adding a main function

Adding a main function which can initiate seperate windows from
different processes. Currently we start differetnt lisp compilers with
parameters set but this needs to be automated and make convenient and
transparent to the user.
Playing with navigation.

How we do navigation is not fixed and we are experimenting with a few
different ways. It has come to light that Viewpoint and Navigaiton
should not be coupeled for all cases.

We will deal with this at a later stage.
making compute-projection method.

The compute projection method takes a head and screen objects and
computes projection matrices.

There are three matrices that are computed each time one for left-eye,
right-eye and middle-eye.
Experimental windowing

Experimental opengl windowing code.
Merge branch 'decouple-window-from-scene'