A type for points (as distinct from vectors), with an appropriate AffineSpace instance.
Point is a newtype wrapper around vectors that we wish to treat
as points, so we don't get them mixed up. The distinction is
important: translations affect points, but leave vectors
unchanged. Points are instances of the
AffineSpace class from