Add piece_equal function to compare piece_t*'s

In the course of adding unit tests for the exisiting board_copy
functions, I realized I hadn't written 'equal' functions for
any of my existing model structs.  The first of these that I needed
was a piece_equal function to check that the pieces were copied
correctly in board_deep_copy.

So this commit adds the piece_equal method, and accompanying unit
tests in units/piece.c.  I noticed that one of these tests was
failing.  After some investigation I noticed that I wasn't initializing
the rank or file field of new pieces and that this was causing the
piece_equal function to return false.

Since I didn't want to commit failing unit tests, this commit also
modifies the piece_init* functions to take rank and file as arguments.