Added diagonal preconditioning.

I think... I might wanna test this some time mightn't I..