New classes to define spline basis and multidimensional sparse array

* basisSpline offers similar functionality to basisChebyshev
* interpolation matrices are stored as sparse arrays, to save memory.
* since Matlab does not supord multidimensional arrays, the new class ndsparse is designed to provide basic operations (indexing, products) so that code in basis and funcApprox can operate on the sparse matrices as-if they were dense arrays.
Added support for Spline basis

* For now, spline basis can only be defined in terms of equally spaced nodes. Need to add code for user-specified nodes.

* Also added validatestrings, to gain flexibility in the inputing of char inputs (nodetype, expansion method).
Added example for interpolation with cubic spline
interpolator class

% this class is a spin off the funcApprox class. It supports an easier syntax for dealing with multiple functions with a single basis (e.g., a value function conditional on discrete states). Some examples:

B = basis(n,a,b)
V = interpolator(B,Vguess(B.nodes))

V(i) = val  %set the "y" values for function "V_i" to val
V{i} = val  %set the "c" values for function "V_i" to val

y = V(x)     %interpolate all functions at x
y = V{j}(x)  %interpolate function "V_j" at x
W = V{j}     %make a copy of interpolator for function "V_j"

%To query the coefficients for function V_j, these two lines are equivalent
cc = V.c(:,j)
cc = V{j}.c

%To query the values of the function V_j at the nodes, these two lines are equivalent
yy = V.y(:,j)
yy = V{j}.y
interpolator now has support for varargout, to be used with method 'interpolate'
basis field "N" returns total number of nodes
if Interpolation returns 1x1 cell, extract its contents
funcApprox getter for "coef" uses "fnodes_" instead of "fnodes"
Add method to convert ndsparse to full matrix
general improvements to interpolator class