change std::array to core::array to have a conversion constructor

* a = ((1,2), (3.5, 4.5)) didn't work
Fix len for tuple

* tuple doesn't have iterator type
Fix zip with different size iterator

* we tested the end of the first iterator in zip but the reference
  is the shortest iterator
add comparison between list and empty list
improve string interface

* negative index (only for const acces as no other access can happen from user on strings)
* fix slices
* print for string_view
* slices of string_view
* boolean test for string_view
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
Merge pull request #117 from pbrunet/master

many bugfix