Fixed compilation on linux and added basic Makefile
Fixed small stuff

* Enum values don't need to be all set, the value is just incremented from the
  previous one if missing. It's better to set invalid/error values to negative
  as a convention (see change in piece.h)
* Name your members with a m_ prefix so it's clear which variable you're talking
  about (especially in the setters and ctor). Don't do this->var = var as it's
  ugly and unecessarily dereferences this.
* When you take a non basic type as an argument try to use const A& a instead of
  A a, as it saves making a copy of a just to pass it. Most of the type that's
  what you want (see all the setters and ctor).
* Mark all the setters as const as they should not modify the object so the compiler
  can enforce it. All methods that shouldn't modify the object must be marked as
  const.
Type is an enum and can be built directly from an implicit cast
Also put the UNKNOWN back to 0 as it seems to be part of the game spec
Replaced array with vector

A vector is a better way of storing contiguous objects than array
as it can expand if necessary, has the same fast access as an array
and doesn't have to maintain empty cells. You should use vectors in
most cases as they provide iterators that allow them to use standard
algorithms as well.

* Have a look at the loops how simpler they are as you only iterate over
  valid elements.
* In the old ChessBoard::save(..) you used "Iter" which wasn't like an iterator
  as it was making a copy of the piece (iter = this->white->getPieceInfos(i);)
  It would have worked if you used Iter*. In that loop you were also getting the
  piece multiple times (once to check it existed, then to make a copy).
* You can use some tricks to make the init a bit cleaner, see the new version
Merge pull request #1 from hamstah/master

Some fixes