Clean up class methods

1. Remove unused/duplicate methods
2. Make more methods private
Actually move a Tile when dragging

Instead of keeping track of an offset and overloading the point and
color methods of the parent class.

NB: This has introduced an issue in TileRack#on_tile_drop which will
stop Cell#on_tile_drop having the desired effect for any Cells created
after the TileRack.
Use composition instead of inheritance for Tile

Extending Rectangle was fun for achieving the dragging behaviour in an
elegant way, but rubbish for building on top of it further. Now that
we're actually move the Tile when dragging it, we can swap to using
composition which will make swapping to an image instead of a Rectangle
much simpler.
Images for Tiles