added tests

Removed boilerplate files
Built tests for the models
Made $piece in Position protected, so we can ensure it can only ever be
a Piece object