Tweaked code that disables Firefox's validation

This change allows me to disable the red outline and tooltip that
Firefox puts on the inputs if the value doesn’t match the pattern,
without the added complexity of a form element within the container. It
is kind of hacky but I think it is the best option.

Removing the pattern attribute from the inputs will disable the
validation but it will make iOS show the text keyboard instead of the
number keyboard.

Using number inputs instead of text inputs will show the number
keyboard, but it will also show ugly arrow buttons that can’t be
removed in any cross-browser way AFAIK.
Various minor optimizations
Various major optimizations and fixes

They are mostly to the populateGrid method. It is no longer
embarrassingly slow. Also, it fills the grid with 30 given numbers, as
I was trying to do, although it still makes no attempt to ensure that
the puzzle has a unique solution or that it is solvable at all.
Slightly simplified some code

I slightly simplified the code used to access rows, columns, and boxes.
Removed unnecessary focus() call
Tweaked behavior of arrow keys

Pressing left shouldn’t change cells unless the cursor is at the left
side of the cell or it is a given cell. Likewise, mutatis mutandis, for
pressing right. The idea was taken from websudoku.com.