src/linalg2.hpp: replace DDISNA from LAPACK by a function template
src/linalg2.hpp: add floating-point type parameter to templates
test/test_linalg2.cpp: test with long double as well

Note that long double is 80 bits wide on both i386 and x86-64.  This
is 16 bits more than double, and therefore is not equivalent to
FORTRAN's 128-bit QUAD real.  For the quad precision, consider GCC's
__float128, Intel's _Quad, or boost::multiprecision::float128.