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.