NEW: function for filling randomly the grid

In order to process to the Hill Climbing algorithm, the grid need to be filled with random value.
The function fillWithRandomValues checks for zone constraint (not having two same numbers in the zone) and fill with random values enpty squares.
NEW: calculate number of conflicts (row and cols) for a square

In order to realise the Hill Climbing algorithm, we need to be able to evaluate the number of conflicts on rows and cols for a specific square.
CLEAN: corrected an indentation for disambiguation

I corrected the indentation of an if statement in SudokuActionsFunction for well showing that it doesn't own to the for statement.
NEW: calculation of conflicts for all the grid

I created a new function for calculating the number of conflicts on row and cols since we assume that zone constraint is respected by the random filling.
I cleaned the calculation of conflicts exploding it in multiple function.
-performance improved : we just loop on the line and on the column (not on all the grid).
-readability improved : the main function was exploded into private functions, only grid calculation is public since we just need this one for Hill Climbing
NEW: Heuristic function for Hill Climbing
NEW: Defined new Sudoku goal test for Hill Climbing

I defined a new test for Hill Climbing success since the table is filled at the beginning of the algorithm.
Thus we should test for constraint satisfaction to see if we are on goal test.
CLEAN: Changed inconsistent naming
NEW: New attribute storing the fixed values

Added a new attribute in SudokuBoard : a boolean table allowing us to know if the value is fixed or not.
Adapted SudokuDemo for initializing this table.
NEW: Permute function allowing a new action for Hill Climbing algorithm
NEW: creation of the permute action

I chose to create a new class because it seems to me that it's clearer than adapting other SudokuAction for matching both ADD_NUMBER and PERMUTE_NUMBERS.
FIX: Corrected problem with fixed values

While trying to copy a SudokuBoard, fixed values were not copied and initializeFixedValues was called causing loss of information using Hill Climbing.
NEW: Hill Climbing call function
NEW: creation of Hill Climbing function factory allowing to use actions and realize permutations.

This code is not working at the moment.
Permutations are well added to the list of actions but not realised on the board. It seems that there is an inversion between the value1 for location 1 and the value2 for location2.
Going to investigate on this point.
NEW: creation of Hill Climbing function factory allowing to use actions and realize permutations.

The algorithm doesn't converge but I think it's normal since we have the permutations done as expected and an heuristic decreasing.
My only interrogation is why the algorithm stops as it still have not reach the goal. Didn't find the solution at the moment.
Merge branch 'chris-1' of github.com:chris-verclytte/aima-sudoku-solving into chris-1

Conflicts:
	aima-core/src/main/java/aima/core/environment/sudoku/SudokuFunctionFactory.java
CLEAN: Removed unnecessary attribute in SudokuHCAction

We don't need value attribute since the permutation is realized with (and only depends of)  XYLocation provided.
FIX: Corrected bad count of conflicts
CLEAN: Relocated random filling of the grid on the Hill Climbing
CLEAN: removed debugging comment
MERGE: Merge branch 'chris-1'

Conflicts:
	aima-core/src/main/java/aima/core/environment/sudoku/SudokuBoard.java
	aima-core/src/main/java/aima/core/environment/sudoku/SudokuFunctionFactory.java
	aima-gui/src/main/java/aima/gui/demo/search/SudokuDemo.java