Initial implementation for #44

Does not yet use GMRES & the ILUT preconditioner, which lives in the unsupported tree, but compiles & runs in real & complex mode.

Comments?

Otherwise I'll merge this, then others can help refine the implementation if desired.