Refactor texture manager to account for spritesheet

The book's TextureManager was intended for use with a bunch of different
files, each containing the image for a different game object.  We are
using a spritesheet so the TextureManager needs to manage lots of
different images embedded in one file.