Add examples. Currently only has MD2 example
which needs cleaning up.
Rename weak_reference to weak_method_reference.
Move weak_method_reference to new 'common' module.
Change weak_method_reference to be a wrapper for
taking references of object methods.
Added a test to show why the code is necessary.
Fix weak_method_reference.

Make weak_method_reference work in set([]).
Add tests to weak_method_reference.
Add missing __init__ file.
Add Analog and Digital input classes.

These classes wrap access to basic analog and
digital inputs.
Provides the ability to register a handler
function.
Multiple instances of thee objects may be used
to represent a physical device.
Create Dispatcher object for observer pattern.

Move handler register / unregister code from
analog / digital input objects into the
Dispatcher.
Add Mouse and Keyboard objects

Use existing Mouse and Keyboard classes from 'examples'
but with updates.
Update syntax.
Remove attach to / detach from window. A keyboard / mouse
requires a window at creation time.
There are no mutual-exclusivity requirements for these
objects. Ie, Multiple keyboard / mouse objects can exist
per window, application, etc.
Use the new Dispatcher to handle event dispatching.
Use the Analog and Digital objects.
Add test for removing reference from container.
Update viewport to use standard weakref class.
Update md2 example to use latest input code.
Explicitely specify events for our mouse and keyboard

This fixes the keyboard not receiving on_key_press
and on_key_release events.
Move some modules around.

Move renderer.scene to scene
Move renderer.mesh to mesh
move renderer.*_camera to scene.*_camera
Update examples.md2.main to work with these changes.
Remove debug prints from input.keyboard
Fix keyboard key_state not being updated.

Register key_state seperately to other events.
Add a test to check for key state changes.
Use the @property instead of property( get, None )
Update viewport to have an X,Y co-ordinate.
Be more specific about removing event handlers.
Decouple the window, viewport and renderer.

You can now have multiple windows and multiple
viewports per window.
Update md2 example to lastest renderer code.
Major restructure of renderer and scene modules.

Make modules more independent.
Window does not store viewports.
Viewport does not store a window.
The Renderer object was removed.
The idle method over-ride was put into its own
module (renderer.idle).
Added a view_matrix object.
Camera's now have a view_matrix class.
Added a projection_view_matrix. This sets up
a 3d projection matrix.
Added an orthogonal_view_matrix class. This
sets up a 2d orthogonal matrix.
Added a Scene class. Each Scene class has
a root node. This allows for the rendering
of multiple scenes.
Added a simple example of creating a window.