Enemy:
  #collideWith
    checks collision. Bounces off of walls and other enemies. Kills marios.
    gets killed by block bonk from below

  Specific enemy behaviors:
    koopas get replaced with shells
    shells get kicked if touched from the side, instead of killing

Mario:
  #collideWith
    gets expelled from walls, bonks blocks, destroys blocks as big Mario
    note: collision with blocks is determined by which one is over the center
      if you're slightly to the side, you slip past it.
  Crazy-ass sprite shifting if you're in star mode!


Item
  #collideWith
    item pickup logic

Mushroom
  #update
    movement logic for mushrooms
    get impulse from being block bonked
      this can be implemented by giving them the appropriate accel
      just if they overlap a block from the bottom.
      of course, only AFTER they finish sliding out of the block.

Water levels:
  make a separate class for water Marios
    less gravity
    swimming sprite
    fireballs are the same
    jump works when not on the ground
  different enemies


TODO: Make level loader use hashes instead of arrays where possible.
Should be a free performance gain.

Should also make item deletion less weird.

TODO: Make gravity exist higher up instead of having a magic number.
Note from the future: Nope. Different objects have different gravity.
