BUG : constructor of SudokuBoard fix

Was using the pointer of the input state instead of copying it
NEW : add constructor from SUdokuBoard Object

- Also added the method getState() to return the state
CLEAN : add some comments and moved some lines somewhere else
NEW : define GoalTest in SudokuGoalTest.java

- add isFilled() method in SudokuBoard.java
- using isFilled() and isAllConstraintsSatisfied()
UPD : update getXcoord and getYcoord and use them in isConstraintSatisfiedFor()

- BUG : there was also a bug with a %size applied on the Ycoordinate of loc
ENH : store tabSize and cellSize instead of just size

- We were repeating a lot of "sqrt" calls to get the cellSize
NEW : creation of CanAddNumber() in SudokuBoard

- This method uses the same principles than in isConstraintSatisfiedFor()
- We'll use this to test if we can make the action before it's done
- We used XYlocation for the coordinates, but maybe we could use int x and int y?
NEW : method AddNumber()

- This method simply calls the private method SetValue()
- It should be used in SudokuFunctionFactory()
NEW : Added SudokuFunctionFactory but not effective

We commented the parts where we define ActionsFunction and ResultFunction : as we can see, it needs a specific name for every possible action.
This does not seem possible with our problem right now since we have so much different possible actions, depending on location and number to fill.
The two actions right now we defined in SudokuBoard are FILL and ERASE, where we left comments wondering about their use.
NOTE : Added comments about x and y orientation
Merge branch 'alexis1st'

Conflicts:
	aima-core/src/main/java/aima/core/environment/sudoku/SudokuBoard.java