Rather than reading a model from an MPS file we can load a model from arrays
in memory. There are various `loadProblem` methods which
are similar to those in OSI. It is easy to add more such methods to CLP if the need arises.

We can copy in integer information by
`copyInIntegerInformation(const char * array)` where array
is 0 or 1 to say integer and we can drop existing information by
`deleteIntegerInformation()`. There are various ways of
changing the size of a model. The simplest is by the use of the method
`resize(newNumberRows,newNumberColumns)` - this will either
truncate the model or add "default" rows or columns - a default row
has lower bound of -infinity and upper bound of +infinity, while a default
column has zero cost, zero lower bound and an upper bound of +infinity.

Normally we would use `deleteRows`,
`addRows`, `deleteColumns` and
`addColumns`, where the `add` methods
will also add in the elements. A potentially very useful way of modifying a model is strictly a
constructor. Given a large model and a list of rows and a list of columns it
constructs the model as a subset of the large model. It is possible to change
the order of the columns/rows and to duplicate columns/rows. So a list of
columns 4,4,1,0 will create a new model where the first two columns are copies
of column 4 in original model and the next two are the first two of original
model in reverse order. This can be useful to form a model with piecewise
linear costs by duplicating columns and then modifying bounds and costs.