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.
Replaced methods of numeric_ops traits class by free functions.
Explicit conversion to scalar_t in many_body_operator::make_canonical()
numeric_ops: Removed "using namespace std"
[gfs] Fix issue #91

Python raises a ZeroDivisionError on floating-point division by zero,
which is a violation of IEEE 754. numpy.divide() obeys the standard
and only issues a warning (can be silenced).
Fix size() in array::range class

The size was returning b-a+1 for range(a,b) while it should
be b-a. Indeed the last element in not part of the range, like
in python.
[gfs] New indices gf_indices

This commit is replacing indices_2 by gf_indices_pair, a pair of gf_indices.
The gf_indices are essentially a vector<string>.  There is a converter so that
gf_indices can be converted both from a python sequence of strings or integers.

I also fixed the slicing of indices in this commit.
[operators] Get rid of old operators

We deleted the old operator class and rename operators2 to operators.
Tests and documentation have been updated accordingly.
[doc] minor correction to an example
Add converter for boost::variant<U,V>

The converter is restricted to two-type variants which is enough
for our current needs. It could be generalized to more types.
[doc] Added example for delta function for GfImFreq, need to decide where it goes
Python converter for std::set

- New converter in triqs/python_tools/converters
- Extended wrap_test
- Corrected order of includes in my_module_desc.py
Variadic generalization of boost::variant converter

- Had to use some MPL iterators, since boost::variant is based on MPL.
[doc] temporary fix to double definition of frobenius norm
Merge pull request #154 from krivenko/new_converters

[converters] Two changes in Python converters
Merge pull request #149 from krivenko/issue91

[gfs] Fix issue #91
Merge pull request #111 from krivenko/operator_scalar_t

[1.2-dev] Better support for user-defined scalar_t in many_body_operator
[operators] hamiltonians now accept a map from spin/orb names to desired operator structure
Fix for clang warning about gf_indices converter