Fixed jumping, movement and game boundaries

Removed a significant amount of whitespace from mario8.png sprite. The
new sprite image is lower quality, but because it doesn't have all the
extra space on the sides, collisions happen much closer to the visible
texture, rather than having some mysterious invisible boundary. The
sprite appears to be the same size as before, but now its hitbox is half
as wide.  Moved game boundary logic into Game.cs. The implementation
where GameSprite.cs handles boundaries violates the Law of Demeter...The
GameSprite.cs class isn't responsible for the game window, so it
shouldn't be aware of the game window size. It also violates the single
responsibility principle, by handling game geometry.