[GC] add full-featured ephemerons in an inefficient way

     - use the generic abstract tag like weak pointers
     - a weak pointer is implemented using an ephemeron (one additionnal word)
     - add for every full GC a complexity of O((n+m)*(m+1))
       with m the number of pure ephemerons,
            n the number of ephemerons used as weak pointers
     - multiple keys, modifiable keys
[Ephemeron] add the module in the stdlib