Add support for blitting Image objects to Surface objects

Palette support is not yet enabled as this will cause everything that uses
it to be black. We need to more thoroughly convert image blitting to use Image
objects instead. Part of this will be the elimination of the pixels() method
on the Surface object.

Add missing palette copy support
Break out SDL_Color[] support into a separate SDLPalette class

With this change, display::Palette goes back to being a
display::Color[256] array, representing 256 {r,g,b,a} tuples. This adds
a second display::SDLPalette class that provides a PaletteInterface over
an SDL_Color[256] array, allowing us to use copy_from() to pull in colors
from other kinds of palettes.
Reduce usage of raw pixel pointer

This is the first pass at removing methods that use the raw pixel pointer.
This does not remove all of them, but it replaces a large percentage with
Surface methods.
Remove more raw pixel access

I believe the only remaining raw pixel access is image
reading/manipulation (of which there is a lot).

Fix missed parens

Let this be a lesson to always clean build before committing.
(I'm getting sloppy in my old age)
Disable PhysicsFS ISO9660 suport

It fails to build under MSVC, and we don't need it anyway.
Make libpng/zlib use internal build rules

This is necessary because the rules for naming the output libraries
are inconsistent, particularly on Windows. Debug builds are
suffixed with "d", and determining exactly what is a debug build
proved difficult -- more difficult than simply including a patched
CMakeLists.txt that does not have this behavior.
Disable Boost.Test's auto-linking feature

This is only an issue on MSVC, but it doesn't hurt to
disable globally.
Silence some warnings on MSVC

Defining _CRT_SECURE_NO_WARNINGS suppresses warnings about unsafe
C runtime functions (strcpy, fgets, et al) on MSVC.
Move drawing functions to draw.cpp
Rename a bunch of drawing functions

I find "draw_*" to make the intent of these functions more clear.
Remove dirty tracking

This rips out both the dirty rect maintenance and the overall "dirty
screen" flag.
Add screenshot capability

display::Image now has an Image(const Graphics&) constructor. This
creates a new Image, copying the screen bits and palette. Paired with
Image.write_png(const std::string&) function, the machinery is now in
place to create screenshots.
Access the pixel buffer by stride, not by width

SDL surfaces sometimes contain internal padding. Account for this
when poking at pixel buffers.
Permit cropped screenshots
Make draw_flag/draw_small_flag use images instead of code

This addresses much of #51.
Consolidate game data into a data/ top-level directory
Replace some images with PNGs

Simplified API to draw the loaded images (using the pattern already
defined of boost::shared_ptr<display::Image>) and converted one usage
of a BUT file in intro.cpp to this new system.

Fixed warning on filter call
Partial conversion usage of BUT files to PNG files

Remove reported unused local variables

This commit replaces all of the straightforward image file usage.
Images that have specific sub-frames loaded still need to be replaced.
Redefine palette copy operation

You now specify a range of color indices as (start, end). More
importantly, the copy operation no longer has the ability to change
color indices: color N on the source will always correspond to
color N on the destination.
Ensure that but2png is linked with zlib