Affine class

jmcarthur and I want to use linear as the basis (ha, ha) for the geometry code in our gamedev meta-library, but would like to distinguish between points and vectors. He added some relevant code, based roughly on the AffineSpace class from Conal's vector-space package, positions forming an affine space that's a torsor for the corresponding vector space or some other whatnot I only vaguely remember.

There's some quasi-duplication going on here I'm not happy about with the Metric class since the affine space has a notion of distance but no inner product. Was going to try to discuss this on IRC but got tired of waiting so you get a pull request instead.

I sorta want to maybe split up Metric to consolidate the distance stuff but I'm not sure what the best approach is.