Too many changes

Far too many changes for a single commit. Things just got hairy.

board.js got a lot of changes in event handling and overall organization
of the file.
- Handlers for individual keypresses were removed. Now there's just one
handler which tosses the direction of the move to the tile and the tile
(hypothetically) knows how to move in that direction.
- Added a Tiles array to collect the tiles on the board.
- Added a TileBuffer to maintain the status of moving tiles without
disrupting the state of the Tiles array until the entire round of
movement has completed.
- Added a Cells array which contains the div elements which act as the
board's background.
- Created a Cell class which knows how to render itself based on its
position in the board.
- Added a function which calculates a Cell's or Tile's offset from the
top or left of the board based on its X or Y coordinate (column or row
position, respectively)
- Added wrapper functions around the offset function. GetLeft calculates
left offset by passing the GetOffset function the x coordinate. GetTop
calculates offset by passing the GetOffset function the y coordinate.
- GetValueAtPosition looks for a tile in Board's Tiles array with an
index matching the pos argument. If it finds one, it returns that tile's
Number. Else it returns an empty string.
- GetX and GetY find the X and Y coordinates of a tile or cell based on
its position on the board. Position, in this case, is the zero-based
index starting at the upper-left corner of the board and ending at the
lower-right corner.
- GetEmptyCells was completely rewritten to support the implementation
of the Tile class. It determines that a cell is empty by looking through
the Tiles array and returning unused indices between zero and
GRID_SQUARE ^ 2, inclusive.
- RandomSpawn instantiates a new Tile and adds it to Board's array of
Tiles. Tile's constructor handles placing the tile's markup in the DOM.

cell.js is brand new.
- Calls Board's offset functions to determine its left and top offsets.

tile.js
- Renamed class members with the first letter in upper case
- The function which randomizes the Tile's starting value is now placed
inline. This is to protect the tile from being set back to a random
starting value (though there isn't really anything preventing users from
changing that value directly)
- Salt is part of an experiment I've been doing with randomizing colors.
Keeping it in for now because I may use it later.
- Markup is how the Tile identifies itself to the DOM
- Created the $me alias for the Tile. Once the Tile inserts itself in
the DOM, $me serves as an expedient way for a tile to identify itself to
jQuery. This may be causing some of the animation bugs, though...
- Some of the CSS for Tiles is generated procedurally so I put that in
the constructor. The border property is static, though, and should be
moved to the .css file.
- AnimateMove uses $.animate to change the top and left properties of
the tile.
- CanMove uses one of three states to represent what sort of moves are
legal for the tile
- Color generating methods are part of the random generation experiments
I was doing. Keeping for now but may end up moving color properties into
the style sheet.
- HSV functions were how I calculated hue, saturation, and value using
the tile's properties
- IsNextPosLegal utilizes a series of formulae which essentially detect
the boundaries of the board.
- Move uses the three states CanMove is capable of providing to
determine what to try. Merging isn't implemented and moving is SUUUUUPER
broken but I don't expect a great deal of expansion to this method as of
now.

index.html
- sorted out the script imports
- removed the static rows and cells in favor of a procedurally generated
board

2048.css
- Added css for the new tile class. It's mostly based on the existing
.cell CSS
- Z-indices were added to make tiles float over cells
- tweaked .board's width, height, padding, display, and position
porperties to try to get it to render more nicely, especially at
different zoom levels

Colour.src.js
- Kept locally but I'm not adding it to the repo at this time. I want to
determine if I'm going to actually make use of it before I put it out
there.

driver.js
- Reworked slightly to cooperate with the static restylings in the Board
class and to utilize the single event handler in Board.