Add function to return the basis functions of a BSpline.

This simplifies the implementation of NurbsSurface.
Add NurbsSurface to splines library
Add unit tests for NurbsSurface, associated knot / spline functions
Add tests for surfaceGrid

add cylinder to Tests -- should not depend on Diagrams!
findSpan: return Nothing if u is outside domain
add QuickCheck invariants for NurbsSurface
remove whitespace at end of line
fix type error in Tests.hs
hlint warnings on Tests.hs
follow hlint suggestions on NurbsSurface.hs
use ~~ approximate equality to test SurfaceGrid