Extracting AINode and AverageCalculator...

... to separate files.
Adding make scripts for AI.
AI refactor - negaMAX => calculating max instead of min.
ArtificialIntelligenceCommonBase constructor refactor
AI - code formatting
AI common base refactor

doxygen changed
precondition of constructor changed
renaming
  depth => remainingDepth
efficency call change (get stored value instead of calculation)
  node.getState().evaluate() => node.getEvaluation()
AI make system improvement.
AI - major efficency refactor

AINode removed as it kept the full tree in memory
  (which made an exponential memory usage.)
  And this caused the change in the next 2 lines
ValueChosenStatePair structure introduced.
AverageOfMaxCalculator major refactor (AINode gone)
Adding safty measure: catchin exception just in case,
  and returning with a default choice (first possible step).
Bugfix
AI - make system improvement.
Changing AverageOfMaxCalculator functionality.

Allows geting average of 0 number of numbers,
adding precondition for constructor.
Adding unit test for AI/AverageOfMaxCalculatorTest
Improving AI make system.