Trying this again, this time with figures being its own object.

+ Rotation is a bit off, I will need to squash the rotated location to
the figure's relative left.
Correcting unnecessary whitespace
Converted Figure to use actual Cartesian coordinates for figures

+ The relativeX and relativeY methods take into account rotation, and
when displaying the figure the relative location to the board is also
taken into account
Figure movement and resetting

+ Check if the figure can move, move it if it can
-- Return boolean values for if the figure can't move, only return false
if collision with a non-figure block or the bottom of the board
Adding a timer to move the block down once per second
Clear rows and collapse

+ Collapsing isn't working
+ I found an interesting bug where my board, in memory, is conceptually
on its side, meaning I have to check height rows, rather than width rows
for fullness.
Created a FigureType enum to handle, well, figure types

Updated code the relied on the original figureGrid to use the new
FigureType enum
Changed grid array to be height-primary (meaning grid[height][width]) to
make some of my for-loops easier to follow conceptually

+ Also moved away from using members directly and instead using getters
and setters if available.
Collapsing rows now works

+ Collapsing works like this:
-- Clear full row
-- Copy row above the now empty row into said empty row
-- Increment Y-position for each block object in new row
-- Keep doing that to the top of the board
+ It's a little slow, but it works
Merge branch 'dev'

A nearly-feature complete classic clone
+ Scoring and game over remain