Implemented a simple self-preconditioner for the CG method inside BQP.
Added an option to TR solver to select for preconditioner.
Restructure the preconditioner interface; will make it easier to specify structured preconditioners.
Allow user to control whether or not self-preconditioning is used at run time.