utility: add iterator_dressing

- a simple way, given an iterator (e.g. of map)
to "dress" it, i.e. make it returns a custom struct of reference
so that codes can be written as :

 auto it = my_struct.begin();
 it->tau + 2 * it->color

instead of first, second, std::get<3> ...
Just for readability.

- checked on clang, mac. Simple cases generate same assembly code than
  using the underlying iterator.