Implement ucl_array_replace_index()

Overwrite the indicated array index with a new value, keeping its position in the array
That does not copy object indeed. What do you need is to do the following steps:

1. Use DL_FOREACH_SAFE decreasing `index` on each list element.
2. If index is 0, then we have found the required element.
3. Save it in some `ucl_object_t *`
4. Call `DL_DELETE (obj, top->value.av);`
5. Insert `elt` instead of `obj`: `DL_INSERT(...)`
6. If index is not 0, then return `obj`, return `NULL` otherwise

So efficiently this should replace an element in the linked list and return the previous value.