Throw exception for illegal call to update from spike::Solver::update()

Move all exception throwing for illegal calls to update() to spike::Solver::update()
from spike::Precond::update().
Make private the type definitions in spike::Solver.