Refactor collections::list

This PR includes:
- Add a public type for ```@List<T>``` (i.e. ```BoxedList<T>```)
- Create a trait for handling ```BoxedList<T>``` operations (i.e. ```BoxedListOps<T>```)
- Create a ```BoxedListIterator<T>``` and implement ```iter()``` from within ```BoxedListOps<T>```
- Refactory current helper functions (i.e. ```any()```, ```has()```...) to an iterator-based approach
- Move helper functions to ```BoxedListOps<T>``` so they can become methods w/ 'self' (i.e. ```list.has(1u)``` instead of ```list::has(list, 1u)```)

Closes #12344.