Moved Pair to the main package (as it is not a solver and I don't know why it was there) and updated references accordingly.
Added overloaded get(Pair) onto the Sudoku class, which works very similarly to get(Int, Int)
Added overloaded cellsInBoxOf() that accepts a Pair for the cell location instead of a row and column key. The new method uses the old one internally and exists only for convenience.
Added annotation MutatesPuzzle.java (blank as of this commit) that denotes when a method DOES mutate the puzzle it is passed as a parameter. A method is semantically expected not to mutate it unless it has this annotation.
Added 2-dimensional spanning method range(Range, Range).
Changed Sudokus.boxKeysFromKey() to be public so other methods can use it.
Added an analog of cellsInBoxOf(), which is locationsInBoxOf(), which returns the same thing except Pair<Int, Int> objects representing locations of cells instead of Optional<Int> objects representing their values.
First draft of SimpleEliminationSolver that conceptually (and by that I mean 'in my head') should work.