Refactors conjugate gradients

cg now:
- uses nonzero default guess for x
- throws PosSemidefException if matrix is not positive semidefinite
- returns solution vector with ConvergenceHistory
- no longer prints anything