add exercise matrix

As the comments at the top of the test program explain, I expanded this one a bit for Go.  When I solved it in Python and looked at other solutions, it bothered me that there was often no thought to the overhead of duplicate representation, or what would happen if the matrix or one of the row or column results was modified.  This test program for Go requires an additional method for setting an element, requires that the return values do not share the receiver's representation, and of course checks that everything works.  It has no way of checking if the solution stores a duplicate representation but people who head down that path should discover (or have it pointed out to them) that it's more work and is error prone.