NWN: Use an abstract class for the chargenerator

The purpose of this class is to:

- Ensure every chargen GUI's has a reset method,
- Have an easy acces to the character user choices through a static
  struct.

As some choices like race/class change directly others (feats/skills),
it is easier to centralized them.
COMMON: TransformationMatrix changes

TransformationMatrix rotation now accepts an
option to normalise input axis vectors.
TransformationMatrix::transpose is now working.
TransformationMatrix::getPosition is now working.
TransformationMatrix::getXAxis is now working.