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.