Remove boost from build
Alien: consolidate three classes into one

This makes it easier for an embedded system to handle, without all
that inheritance.  The three classes are instead distinguished by a
type parameter that is passed to the constructor.
main: always use local data dir
game: simplify code for creating aliens

Move the constructor call out of the switch statement, so it doesn't
have to be called from four places.  Instead use the switch statement
to set variables that are passed to the constructor.
game: Use alien array instead of list

Do not use STL list on an embedded platform.

Also, since aliens are no longer dynamically created and deleted, they need
a flag to indicate whether they're alive.
Replace const ints with #defines

This reduces the number of actual const variables created.

In a few places, some const ints remain.  These are retained to keep the
code less changed.
game: use shield piece array instead of list

Also remove dead entities list and stl list dependency.
Move fixed point math functions into game.h
game: use #defines for alien speed increase factors
Reduce size of fixed point values to 16 bits

Also reduce the fractional bits to 4. (log2(16))  This leaves 1 sign bit
and 11 whole number bits (0-2047).
game entity: use bit fields for status

Saves precious space on an embedded system.
game entity: reduce member 'position' to 8 bits

Every byte counts!
game: replace shot/explosion vectors with normal arrays
game: replace int vectors with arrays

Also remove dependency on stl vector completely.
game: make arrays local to game control

This way, they don't take up memory outside the game.
Add event counter to track bottlenecks

Current data sample:

Per-loop stats, averaged over 1000 loops:
collision checks: 4156.53
duration calls: 0.07
movement calls: 63.59
game: refactor shield creation
game: add shield group entities

These will be used for per-group collision checking, to avoid having to go
through every single shield piece.
game: use continue statements in collision check loops

This reduces the amount of indentation and braces.

No changes in the actual loop logic.
game: Do not continue collision checks on inactive objects

Minor improvement in number of collision checks...

Per-loop stats, averaged over 1000 loops:
collision checks: 4056.73
duration calls: 0.05
movement calls: 63.57