Merge pull request #1 from gmcnutt/master

Take this, Sam!
Loaded project in Visual C# 2010 Express.

- Some reformatting
- Various notes on refactoring TODO
- Some minor fiddling about with glcontrol1 size and the like
First major refactoring since Gordon and I met
(and the OpenTK TVP demo was merged with the SimpleMapV1 demo).

- Removed various uncalled code and such.

- Moved the OpenGL setup and OpenGL texture loading
  into Form1.OnShown(), which is called after glControl1_Load().

- Changed TileSheet to perform OpenGL texture loading;
  removed OpenGL texture loading elsewhere;

- Changed TileSprite to store the OpenGL texture ID;
  changed TileViewPortControl.Render() to use that ID.

- Renamed TileSprite.Draw() to GDI_Draw_Tile();
  (keeping this around as we may want to blit a sprite
  onto a Form or Control for some UI purpose),
  added a call to this in Form1.OnPaint() to demonstrate it.
Minor tidying in TileSprite.cs
A bit of refactoring;
- added some convenience methods for tile-rectangle calculations
- added some overloads for (x,y,w,h) versus (rect)
- added some overloads for (x,y) versus (index)
- removed some redundant GL calls
Various satisfying visible changes and new features:

- Turned the TVP "UI Layer" back on
  Sadly, no transparent tiles (via color key on FF00FF) yet.
  Multiple TileSheets are supported, and objects on multiple map layers.
  Added various map contents to different layers to demonstrate.

- Flipped the Y axis to what we want
  (Treating the origin as top-left, rather than bottom-left OpenGL origin)

- Keyhandling is on KeyDown now, so we get key repeat
  Sadly, arrow keys do not work for now, only numpad, see notes in OnShown()

- Added an interface ITileSprite, renamed TileSprite to StaticTileSprite,
  added AnimTileSprite, changed ObjectRegistrar to be able to hold ITileSprite

- The TVP rendering engine now supports animated tile sequences
  of various periodicity (on the same screen).
  Put various contents on the map to be able to see the results.
Fiddling about with tile animation, some bugfixes

- Found a bug (?) related to loading 24-bit color PNG files
  (the image data blitted from the OpenGL texture resulting is oddly distorted)

- Added various sprites to the Form1 demo to visually illustrate
  the (in)correctness of the animation of the TVP.
Refactored the DenseGrid.RotateXXX() methods
to act as instance methods,
acting upon 'this' and returning a new DenseGrid.
Whitespace re-arrangement, minor comment changes
First half of large refactoring

First half of large refactoring: TileViewPort + TileViewPortControl -->
TVPC
Also, some related materials split off into separate files
Second half of large refactor:
- using TVPC rather than TileViewPort + TileViewPortControl
Signed-off-by: Sam Glasby <sglasby@cableone.net>

Re-created the VS2010 project from scratch,
so as to get the dir structure to match the VS internal folder structure.

Also, considerable refactoring in TVPC.cs,
such as changing the GL tile blitting to use
arbitrary pixel coordinates rather than tile grid coordinates.
Changed key handling so that ARROW keys work (was: only Numpad keys)

A first attempt at smooth-scrolling, not quite right yet.