Moved #is_value_unassigned?(value), #filled?, and #assignable_values to
BoardState from the Provider class.

Solver now returns a tuple of (BoardState, Boolean) instead of returning
the Provider.