Add QuickCheck properties for surfaceGrid

In particular, make sure that the grid is uniform
and the requested density
Add type signatures after NurbsSurface type generalization
Be more careful about the bounds of ctRange

If ctRange returns a value outside of the knot domain,
evalSurface will return Nothing.  So ctRange cannot be even
a tiny bit outside the domain.
Remove imports of Vector.*.Safe modules

These no longer exist in vector-0.10
add HUnit to cabal build-depends