Merge: Intro an unrolled linked list, and fix `List::insert`
An unrolled list is a sequence implemented by a linked list of arrays.
I use this list for a very long FIFO. `Array::shift` is very slow and a large `List` can create too many small nodes for the GC.
The test compares the behavior of `UnrolledList` with `List` on random data sets. It allowed me to find a bug in `List::insert`.
Pull-Request: #1379
Reviewed-by: Jean Privat <jean@pryen.org>
Reviewed-by: Lucas Bajolet <r4pass@hotmail.com>
Reviewed-by: Alexandre Terrasa <alexandre@moz-code.org>
Reviewed-by: Romain Chanoir <chanoir.romain@courrier.uqam.ca>