Changes SubmatrixIterator to return shared pointers
Adds stream iterator and stream submatrix iterator.
Fixes problem with not initialising the members of the stream submatrix iterator