[Bugfix][BCRSMatrix] Never change the stored value of the allocated array size

That value indicates the amount of allocated memory, changing it tripped
a problem when copy-assigning matrices for me.
[Release][BCRSMatrix] Delay allocation of contiguous data array until after the pattern has been created

Due to the way BCRSMatrix construction works, you cannot write data to
the matrix before the pattern is finalized, except in the new implicit
build mode. This fact makes it possible to reduce the memory
requirements when building the pattern using an intermediate data
structure: That temporary data structure will usually be of about the
same size as the number of nonzero matrix entries. Thus by delaying the
allocation of the actual data array in the BCRSMatrix until after the user has
built up the pattern information inside the matrix and has had a chance
to deallocate the temporary data, we never need substantially more
memory than required for the matrix in any case, which avoids the
current memory spike during pattern construction.
[Release][BCRSMatrix] Add a more efficient interface for setting all column indices of a row