New utility class numeric_ops<T>

* numeric_ops<T>::is_zero(T x): tests if x is 0. This static method is
specialized for integral types, floating point numbers (tolerance can be
passed through an optional second argument) and for std::complex.
* numeric_ops<T>::conj(T x) returns a conjugate of x if T is an instance
of std::complex. Otherwise it returns x.
* One can add support for new user-defined 'numeric' types through
specializations of numeric_ops.
Better support for user-defined scalar_t in many_body_operator

* Use numeric_ops<scalar_t>::is_zero() and numeric_ops<scalar_t>::conj()
instead of explicit calls for double and std::complex<double>.
* Free factory functions c, c_dag and n are templated on scalar_t with
default set to double.
Fix for issue #16

* f2py execution script does not respect ${TRIQS_LIBRARY_LAPACK}
Fix for issue #81 (needs testing).

* Reenabled 3d Bravais lattices.
Made TBLattice work again.

Fix proposed by Malte Harland.
A workaround for issue #112
workaround for iadd, isub, imul, idiv
Issue #112 again...

I will have to revert these commits once a real solution arrives.
sumk_discrete: workaround for issue #115
Added experimental hilbert_space_tools.
tridiag_worker: support for complex Hermitian matrices

Real/complex implementation is switched with a bool template parameter
of tridiag_worker. Set to real by default.
Cleaned up tridiag test.
Slight coding style impovement in tridiag_worker
Merge branch 'complex_tridiag' of github.com:krivenko/triqs into complex_tridiag