Add Rectangle#contains_point?

Rewrite #under_mouse? to use the new method. Separating it out lets me
query based on other points, which will be useful for snapping.
Add simple Point struct

Use this instead of passing around (x,y) pairs everywhere.
Extract build_background method from Grid#initialize
Snap based on the centre of the tile.

I think using the position of the tile will be clearer on a touch
screen. I'm not sure whether it will be clearer with a mouse.