Custom set implementation for building sparsity pattern

When building the sparsity pattern we need to keep track of the
occupied columns for each row, which requires a set implementation
which is fast for insertion and doesn't require frequent memory
(re)allocation. It turns out a simple set implementation based on a
vector which is searched linearly on every insert and appends to the
end if the entry was not found ist faster than boost flat_set for
most relevant matrix sizes.