Add lots of abstraction

If this is ever going to work, Reggie will need a lot more abstraction.
I've added abstraction to both the mainWindow.LoadLevel() function and
the level class.

Side note: Don't try to save NSMB2 levels yet. It will "work", but it
saves in the NSMBW level format. This can be opened by normal Reggie,
but NSMB2 Reggie will crash badly when re-opening it, eating up your RAM
in the process.
More abstraction

Added a lot of abstraction to the area classes.
Added sprite info and removed sprite images

I made a brand-new spritedata.xml from scratch, and added as much info
as I could scrape from 1-1. I also removed all sprite images because
they don't apply to NSMB2.

Note: I currently have exactly 500 sprites listed in spritedata.xml.
There isn't anything special about this number, it's just an estimate of
how many sprites are likely to be in the game. When more research is
done, I'll change the number.