Working on adding curvature.

There are a couple of open questions with this still.  One is how should we generalize the space that we compute at least the squared version.  The second is what return values should we use.  Would it be better to extend some scalar space with infinity explicitly?

Finally it would be nice to have this work for higher dimensions.

Also due to some failing systems here, I have not compiled this locally yet :D.