Nurbs surface

In this branch I've implemented NURBS surfaces---that is, they have two parameters, u and v.  I'm using these in extending [Diagrams](http://projects.haskell.org/diagrams/) to 3D.

The algorithms come from Piegl & Tiller's /The NURBS Book/.  There are many more helper functions I'd like to add.  I've included some simple tests.

I made NurbsSurface general over VectorSpaces.  It uses lists-of-lists internally, unlike the use of Data.Vector elsewhere in the library.  This bugs me, but I'm not aware of an idiomatic way to do 2D arrays in Data.Vector.

I appreciate any feedback, and suggestions of improvements you want before merging.