Two ways to get a submatrix

Not convinced either way. View makes sense from the prespective of
submatrix multiplication for parallelisation without allocation, but
Submatrix makes sense for parallelisation within cache confines, and
it is perfectly conceivable that some Matrix implementations may not
be able to satisfy the the requirement of reflected changes.

Define both and leave it up to implementors?

Note that m.Submatrix(a, i, j, r, c) can be simulated by:

t.View(a, i, j, r, c)
m.Clone(t)