Fix imap

* iterable were saved to avoid dangling references but it was not this values
  which was passed to others constructors. Now, iterable are saved in imap_iterator
   and it works. More perfect forwarding are enabled BUT iterable are saved twice:
   in begin() AND in end() of _imap
* multiple redundancy of template declaration in constructor as It... can have const ref but
  Types... can't. Same for First and L0. Needed to enable perfect forwarding