Initial implementation of the sparse matrix.

@bsoetaer 
Tests pass when the contracts are disabled.
In ruby, a number's `to_s` method can take an integer indicating the base in which it should represent itself.  `2` in this case indicates that the exponent should represent it in binary.

Let's see what happens with an exponent of 9 (`1001`):

First, we create an array the same length as the binary representation of the exponent where each element is the square of the previous:
`[m, m ** 2, m ** 4, m ** 8]`

Then, we pair each of these with the corresponding digit in the exponent's binary representation:
`[(m, 1), (m ** 2, 0), (m ** 4, 0), (m ** 8, 1)]`

Now, we select only those matrices where the binary digit is 1.
`[m, m ** 8]`

And lastly, we multiply all the elements of the resulting array together:
`m * m ** 8`, or `m ** 9`