Remove the uneeded disambiguation between units

It was just causing unneeded confusion, especially as all
units can do the same things.
Made board::Board.set less likely to panic.

if the x or y is too high, just return false.
Add a .new function to unit::Unit
Add .set_row .set_column .set_grid to board::Board

The functions mutate the board state in place and return false
if it was not doable.