c14. add some helper traits to simplify

add_const_t and co....
fix include
clef: cleaning

- use alias
- rename a few things, simplify
- some clang format
- add eval to ref wrapper
- correct evaluator general (return const &, no copy)
- correct declaration order of struct and operator OP
clef: further little corrections

- declaration order in template.
- some eval details
- do not undef the macro TRIQS_CLEF_STD_MATH_FNT_TO_MAKE_LAZY
for reuse in other part of the lib
clef : add apply_on_each_leaf

- apply_on_each_leaf: apply a function object to every leaf of the tree
- add some macros...
Add statistic tools

- binning, jackknife, autocorrelation, observable.
- DRAFT only : in development, debug. Doc to be written.
arrays : fix matrix = scalar for complex types

Pb :
M() = rhs; // rhs of type RHS
Currenlty does :
M(i,j) = (i==j ? rhs : RHS{})
Changed to
M(i,j) = (i==j ? rhs : RHS{0*rhs})

If RHS is a double, int ... Same result.
If RHS is a matrix, gf, currently the offdiag elements
are default constructed (i.e. of 0 size !).
Which can break operations later (matrix<matrix<double>>)
After change : all elements have the same size !
arrays: h5 read/write for arrays of complex types

- array of complex type (not fundamental) can now be saved/loaded to
  h5
- with a test with array<gf<...>>
arrays: add make_unit_matrix and norm2, norm2_sqr
clef: correction of macro

- a strange issue, why was it not working ?
- anyway, the separation is useless (was a try).
c14, tuples : various fixes.

- Various details (for_each_enumerate impl)
- also put all tuple stuff in tuple_tools.hpp
- add std14 namespace for usage of c++14 helper types
gf: add C++14 impl of meshes products

-  add c14 include
- the C++14 is lot more readable (due to generic lambda).
- for mesh/product.hpp -> now 2 versions (C++14 and C++11 for temporary
  backward compatibility).
lattice: clean old classes, add bz_mesh, gf on bz
Fixed computation of density for full matsub mesh

-> Previously, calculation was implicitly assuming a mesh with only positive matsubara frequencies.
-> Added corresponding test
-> Also added test of density calculation with or without correct tail.
Changed format of requirement warning in doc

- now more visible
- also added link to applications page
Added basic doc + additional test for tail fitting

- added test for a 'real-life' GF + corresponding output
- added basic usage documentation for tail fitting from c++. Full implementation details yet to be written
Fixed fit_tail for pos. and neg. matsub + bosonic

-> code was previously assuming mesh with only positive, fermionic matsubara freqs
-> changed wn_min to n_min (was misleading, since it was an index, not a frequency) / same for <-> max
-> changed doc accordingly
Extending fit_tail for scalar_valued (+ test)

-> extension by using reinterpret_scalar_valued_as_matrix_valued
Made test gf_notail clearer.
gf make_gf_from_g_and_tail : add security

- if shape (g) != shape(t) -> exception
gf : corrections

- correct previous commit (for scalar gf, the new check was not compiling)
- correct windowing of linear mesh (left point corrected as right point for rounding error