skip over zero entries in matrix_add_block
go crazy with c++11 auto
use c++11 iteration where possible
move nan-setting code from solve to supp_to_nan