Removed 2D code.  Added Piece class.
Split Piece off into its own header.
Added include guards to piece.h.
Introduced coordinate class.
Changed Piece default coordinate to be (-1, -1), to avoid a silent error.
Gutted Piece.  Pieces don't know about coordinates, boards know about coordinates.  Changed board to be an associative array of coordinates and pieces.
Wrote hasher for Coordinate
Updated print_board to use list.
Extracted coordinate-checking logic into function.
Wrote member function comments
Added bracket lookup to Board.
Added bracket assignment
Renamed Pieces to BoardThings.
Added BoardThing printing
Added setter.
Made BoardThing.to_string a virtual member.
Changed board map to hold pointers instead of values.
Removed extra operator<< overload from Water.
Added BoardThing subclasses for ships.
Added comments.  Board's bracket operator now returns a shared_ptr, not the pointee.