Making heap.h use std::vector instead of vec<>

This makes things so much clener. It also allows to move to a completely
std::vector-based design in the future
No need for indirection, nVars() is the same as solver->nVars()
Check the return value of the addClause in solution extension
Don't use assings[] directly, use it through the value() function
Clean up indentation
We don't use so much memory for solution extension, so no need to save
Bug: the watchlist was enlarged too late

The variable replacement wasn't put anywhere/was put wrongly/could have
caused segfault. Fixing.
Reorder heap late so it's using the new nVars()

Not the current nVars(), which may be larger. This is not really a fix,
I think, but it looks better this way
Use the nVarsReal() instead of other sizes that may be different
Renumber variables later and clean the cache before

Cleaning the cache just before renumbering is very important, since the
cache might contain variables that are no longer active and so they
might get referenced later, when the data structures are already
shrunk, leading to a segfault
This would underflow under the new nVars() function
Check a bit more using .at() instead of [] in std::vector
Fixing var updater by removing some incorrect checks