Added a missing detach() to List<T>::find()

Fixes the case like this:
```
List<int> l1; // { 1, 2, 3, 4, 5 };
List<int> l2 = l1;
List<int>::Iterator it = l2.find(3);  // Logically, it points l2[2]. Not l1[2].
*it = 33; // This modifies not only l2[2] but also l1[2]. 
```