Initial functions and boiler for human solver
Merge remote-tracking branch 'origin/master' into solver
Added rater and single cell solving

Added in solving for cells that only have 1 option. This is actually
enough, interestingly, to solve easy sudoku. Once it solves that cell,
it removes the number from all cells that have that number in their
pencil marks (in their column, row and box obviously).

Also, added a rater which uses the human solver to give a sudoku a
rating.

Currently, the rating will be a max of 81 (although that's impossible to
get with the current solver). Anything less than 81 minus the original
number of filled in cells means it can't be solved. Eventually, the
rating will just be 0 to undefined, with 0 being the easiest, going
upwards with the only limit being undefined which means it's unsolvable
with the current rules.
Merge remote-tracking branch 'origin/master' into solver
Solving hidden singles in rows/cols

It will check for any number that is only in 1 of the boxes in a
row/column and will set that to be the number. Doesn't do boxes yet.
Fixed a bug and added naked pairs

It wasn't actually doing hidden singles for columns, so fixed that.

Also, added the naked pairs solver, which works for rows and columns
just now. The solver method is getting a bit...big. I might want to slim
it down a bit. But not sure how exactly.
Merge remote-tracking branch 'origin/master' into solver
Added naked triples

Only for ones that all 3 have the same 3 currently, though.
Added separate button for the human solve

Allows us to have both solving algorithms working, as I think I want to
merge this into master soon, but it doesn't solve every sudoku yet.
Added boxes being sent to naked pairs.
Changed naked triples

Naked triples now checks for any triples, no matter how many pencil
marks there are on each, as long as, between the 3 of them, they have
only 3 numbers.
Added hidden triples and hidden pairs.

After many issues :-P
I have done far too much to this for it to actually mean anything...

Added guessing if nothing has happened, added messages, redid some of
the rating and I did some rearchitecting. I need to do much more
rearchitecting before I even think about pushing this up.
Renamed files

To make more accurate names for them based on what they each do.
Code formatting changes
Modified how the html gets data

It now uses the actual Board data structure rather than the underlying
array. This is much more sensible (obviously) and allows me to change
the underlying structure. Because I think it might be incredibly
inefficient just now.

Also, fixed a bug with the pencil marks being still added to the old way
of defining them.
Fixed issue with hidden triples

I was adding extra numbers on if they didn't all have 3 numbers. For
example, 3,4 4,5 3,4,5 would change them all to 3,4,5. Now it doesn't.
Also, added some more message logging.
Added multiple web workers and background generation

There are currently 5 web workers that generate sudoku now, and pass
them back to the controller, which stores them and waits for the user to
request a new game. When they do, it checks if we have one already
generated, and uses that one. Otherwise, it does the old style
generation.

Next stop...ranking!
Added client side ratings.

So, when we get the board back, we check the rating and stick the board
in the correct array. Then when we want a new game, we check the current
difficulty setting and give an appropriate one, or generate a new one.

Not sure what to do about generating an appropriate one as currently it
just generates a random one which probably doesn't fit the correct
difficulty setting.
Added icon for chosen difficulty