Matrix interface provides method sets for arithmetic operations.
There is no matrix division.
Matrix Multiplication should return a new matrix because its shape possibly changes.
Matrix manipulations returns a value.

The value may be a pointer to the original reciever or to a new value of Matrix.
Matrix.At returns an element specified with arguments: row and col.
Matrix.Shape returns the numbers of rows and colums of the reciever matrix.
Matrix.At returns an error value when invalid arguments are passed to the method.
denseMatrix satisfies Matrix interface.
Matrix.Update modifes an element specified with row and column.
addable and multipliable validate the shape of matrices to be added, subtracted or muliplied.
List test cases for denseMatrix.
Doesn't test denseMatrix.Shape. Shape is a method of shape struct, which is embedded in denseMatrix.
Separate packages to classify matrics with natures such as mutable or immutable, dense or sparse, etc.
Shape is too obvious to test.
Two functions, addable and multipliable requires the shapes of two matrices. This makes test easer.
Two functions, addable and multipliable, need tests because they are used by all matrix types to validate their shapes.
Shape.String method is used for debugging.
Test case: At and Update.
Integrate with Travis-CI.
Use capital case for properties of test case.