Initial documentation

Still pretty rough.  We can polish it up and go over some details before we submit it.
Yeah, I'm not really sure either. If we wanted our design to allow n-D matrices all our code would need to be able to handle a variable number of dimensions. Also there is some operations on 2-D matrices that are not readily defined for n-D matrices, such as matrix multiplication.