Added the matrix builder contracts...

along with simple test cases to exercise each of the contracts.  Additionally, added a simple implementation of MatrixBuilder for constructing complete matrices.

Also added the file `matrix.rb` for adding the matrix contract to the built-in Matrix class.
@bsoetaer 
Okay, I wasn't really thinking in the sparse matrix sense and thought that the Matrix class way of construction was better but actually your way is probably better for sparse matrices.