Preconditioning

Added stuff for preconditioning. Not really using it, because I don't
really know what I'm doing yet (see unit test)... Todo:
1) read a textbook
2) write a test
dusted off 2d sim a bit