[pattern] cleaned up a bit and added some convenient methods

This commit adds the convenient method `insert(ii, jj)`, which searches for
`jj` in the `ii`th vector and adds it, if necessarry (it mimics the old
`inner(ii).insert(jj)`, where `inner(ii) `was a set). In addition there are
two new methods for sorting rows, namely `sort(ii)` and `sort()`, to ensure
that the column indices are sorted in each row because there are (/may be)
backends which need this. Use of them is optional (of coarse) if you know
what you are doing.

If there is too much of a performance penalty we could think about
providing two separate implementations of the sparsity pattern. A
(possibly) memory intensive one based on a `std::set` (as it used to be)
and a (possibly) runtime intensive one based on a `std::vector` (as it is
now)...