Replace CEM.IMG usage with cem.img.X.png in ast3.cpp.
Rename "cem.img.*" files to "cemetery.*" and "hospital.*"
Replace aprog.but with PNGs

The PNGs were formerly named by their position within the .but file,
but it's somewhat more clear to number them with separate player and
program components. Whatever.
Prevent duplicate define warnings on Mac OS X
Remove budd.but
Access main menu image via filesystem
Remove unnecessary image constructors

These were useful before PhysicsFS but are no longer needed.
Remove copy-constructability

This was dubious (i.e. probably broken) anyway, and never used.
Remove _width and _height

SDL_Surface has these members internally, so our local copies are
completely unnecessary.
Ensure surface pitch == width

This allows us to use SDL blitting routines, instead of rolling our
own (incorrect) drawing methods to accomodate our legacy data. We
can switch back to SDL_CreateRGBSurface() once all our code is aware
that surface width != pitch.
Create display::PalettizedSurface

A Surface is now a generic 2D array of pixels that knows how to
operate on its contents. The game only really has one type of Surface
right now -- a PalettizedSurface -- which is a kind of Surface that
uses 8-bit pixel values pointing into a Palette, supporting optional
transparency.

display::Image no longer exists. In its stead is display::image::*
functions which can read a buffer of PNG data and return a Surface.
display/image/* is just for image I/O.
Replace display::image's direct SDL surface access with a function
Re-work LegacyPalette to contain the pal[] array

This will let us use multiple LegacyPalettes, and eliminates the
implicit receiver on display::legacy_palette; it's now
graphics.paletteInterface(), mirroring the way .screen() is used.
Clean up warnings, mostly unused variables
Remove intel.but
Add protobuf to build process

Game source file can now access protobuf definions with:
  #include "raceintospace.pb.h"

Ensure that this file is included before all the normal game headers,
since somewhere we're still #pragma pack(1)-ing without cleaning up.

This changeset will break cross-compiling. `protoc` needs to be a
native executable, and the lib/protobuf/ build process does not yet
distinguish between native and cross toolchains. You could work
around this by poinging src/protobuf/CMakeLists.txt to a precompiled
protoc instead of the one in ${LocalPrefix}/bin/, but the proper fix is
to update the lib/protobuf/-generated protoc to support cross-compiling.
Improve protoc support

We should use our locally-compiled protoc only if we're compiling it.
In that case, we should also add a dependency to that effect.
Otherwise, assume `protoc` is in the path, and act accordingly.
Add missing packages needed on the Travis boxes
Add a protected Surface constructor that accepts an SDL_Surface
Refactor most of display::Surface into display::LegacySurface

This makes it clear which display operations depend on pixel-level
access and 8-bit palettes, and which operations do not.