Made some more headway with the basics.

Fixed up the Cloneable concept a bit more -- has a more intuitive interface for creating a class-style clone vs. an instance-style clone (via Cloneable.clone and Cloneable.new).

I was originally going to design this as simple pieces that snap to grids.
Instead I'm gonna go for a more modern style with pieces that move freely.
Designing the actual GameBoard to function in this way will allow for
fancy animations and stuff... probably.

I should probably abstract the GameBoard "physics" stuff (pieces falling)
from the actual update() function, since I'll be implementing it differently
across boards (if I want to... it's about the option!).

I'll make a more proper collision function later. My brain is not in gear
for "physics."

Also, for future note: in GameBoard:clear() I am orphaning every game piece.
I've never been one for pre-optimization, but I should probably add a proper
interface for reusing tables all over this project, and every project that
sports heavy table usage.

edit: added comments to Cloneable file for clone() and new(). Mostly for me,
but for anyone looking at it, really.