Make things prettier and easier for future generic game example creation

Support for multiple games:

New game classes should support:
- a constructor (with or without parameters)
- static method for getting the list of players (no parameters)
- a static method for getting the list of features (same parameters as
constructor)


Support for multiple example types (i.e. terminal states only, min-max,
etc.):

Added a new enum 'SupportedModes' to represents all modes.
Each mode has a static method that implements it and is called inside
the switch in method 'createExamples()'. New modes should be added to
the enum and implemented by a new static method. The switch close in
'createExamples()' should be modified to call that method when called
with this new mode.