Preserve ThreadGroup#list order with ArrayList

Because MRI uses a linked list which preserves the order of the threads.
https://github.com/ruby/ruby/blob/2a754a733045da9965e88d1f31e650ea6b3f2b6c/vm_core.h#L973-L978
This is useful to assume the first thread in the list is the root of a
group, and saving values in the thread could be shared amongst the
thread group. If we ever have thread group local variable, this is not
really needed.