screen: Clear num_sprites_per_type at init
main: Fix order of image loading
images: Correctly copy data smaller than buffer size

Instead of blindly copying the entire buffer size, check the copy offset
against the end of the source data as well.  This is important when the
remaining data to copy is smaller than the buffer.  It would be incorrect
to copy in data from past the end of the source data.
game entity: remove speed member variable

The speed can be removed from each game entity since:
 - All aliens move in sync.
 - All player shots have the same speed.
 - All alien shots have the same speed.
 - Shields and explosions don't move.

Just keep track of each type of speed in the Game class.

This increases the game class by a few bytes, but reduces the overall
game data size.

Total game size: 1560 -> 1342 bytes
Game entity size: 12 -> 10 bytes
game: include Game class in game data size

This increases the reported game data size from 1342 to 1442 bytes.

(No actual increase in overall memory requirements.)
game: remove num_entities_removed member

The usage of this variable was removed long ago.

Game data size: 1442 -> 1440 bytes
game entity: Group bit field members together

This makes the data more compact.

Game data size: 1440 -> 1331 bytes
Game entity size: 10 -> 9 bytes
game: Assign alien indexes based on each alien type

Previously all three types of aliens shared the same index space, and the
index was the position/index within the alien array.

With this patch, each alien type has its own index space from 0 to N-1.

The previous use of alien index has been updated to use the for loop
index.  Storing the alien position as a member variable was a relic left
over from when this game used variable arrays.
game: move bonus ship location def to game_defs.h